Maison >base de données >tutoriel mysql >Comment utiliser correctement les instructions préparées PDO avec les requêtes MySQL LIKE en 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));
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');
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
Solution
Pour résoudre ce problème, utilisez le code suivant :
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
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!