Maison > base de données > tutoriel mysql > Comment utiliser correctement les instructions préparées PDO avec les requêtes MySQL LIKE en PHP ?

Comment utiliser correctement les instructions préparées PDO avec les requêtes MySQL LIKE en PHP ?

Mary-Kate Olsen
Libérer: 2024-11-29 16:38:11
original
1018 Les gens l'ont consulté

How to Correctly Use PDO Prepared Statements with MySQL LIKE Queries in PHP?

Instruction préparée PHP PDO - Requête MySQL LIKE

Lorsque vous travaillez avec des instructions préparées PDO en PHP, implémentez une requête LIKE à l'aide du pilote MySQL peut être un défi. Cet article explorera la syntaxe requise et fournira une solution pour aider les développeurs à résoudre les problèmes qu'ils pourraient rencontrer.

Formulation du problème

Un développeur tente d'exécuter une recherche requête à l'aide du pilote MySQL de PDO. La requête fonctionne parfaitement lorsqu'elle est exécutée directement via le client MySQL, mais elle ne renvoie aucun résultat lorsqu'elle est exécutée à l'aide de PHP.

Syntaxe de l'instruction préparée PDO pour la requête MySQL LIKE

Contrairement au remplacement de chaîne, les instructions préparées dans PHP PDO transportent les données séparément de la requête. Par conséquent, vous devez éviter d’utiliser des guillemets doubles ou simples lors de la liaison de valeurs à une instruction LIKE. La syntaxe correcte pour lier une valeur à une instruction LIKE dans PHP PDO est la suivante :

$searchTerm = '%value%';
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => $searchTerm));
Copier après la connexion
Copier après la connexion
Copier après la connexion

Tentatives incorrectes

Les syntaxes suivantes tentées par le développeur sont incorrectes et ne produira pas le résultat souhaité résultats :

$searchTerm = '%value%';
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '"%' . $searchTerm . '%"', '1');
Copier après la connexion
$searchTerm = '%value%';
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => $searchTerm));
Copier après la connexion
Copier après la connexion
Copier après la connexion

Solution

Pour résoudre ce problème, utilisez le code suivant :

$searchTerm = '%value%';
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => $searchTerm));
Copier après la connexion
Copier après la connexion
Copier après la connexion

Explication

Les instructions préparées dans PDO n'effectuent pas simplement des remplacements de chaînes. Au lieu de cela, ils traitent les données séparément de la requête. Les guillemets ne sont nécessaires que lors de l'intégration de valeurs dans la requête elle-même. En omettant les guillemets dans la liaison de l'instruction préparée, PDO est capable de transporter correctement la chaîne '%value%' vers la base de données pour l'utiliser dans la comparaison LIKE.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal