Implémentation de la requête LIKE dans PDO
Lorsque vous utilisez PDO pour exécuter des requêtes impliquant l'opérateur LIKE, il est essentiel de comprendre comment structurer correctement le requête et les paramètres. Considérons la requête suivante :
"$query = "SELECT * FROM tbl WHERE adresse LIKE '%?%' OR adresse LIKE '%?%'";
$params = array($var1, $ var2);"
Erreur :
La requête ne renvoie aucun enregistrement car les signes de pourcentage (%) sont inclus dans la requête elle-même, plutôt que d'être spécifiés en tant que paramètres.
Solution :
Pour remédier à ce problème :
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Explication :
En incluant les signes de pourcentage dans les paramètres, nous nous assurons qu'ils sont correctement traités comme des espaces réservés lors de l'exécution de la requête. Cela demande à PDO de remplacer les valeurs correspondantes par les termes de recherche réels, permettant ainsi à l'opération LIKE d'être effectuée correctement.
Lors de l'examen de la requête générée à partir de votre code d'origine, vous remarquerez quelque chose du genre "SELECT * FROM tbl WHERE adresse LIKE '%"foo"%' OR adresse LIKE '%"bar"%'", où l'instruction préparée cite par erreur les valeurs dans une chaîne déjà citée. En suivant l'approche correcte décrite ci-dessus, vous pouvez résoudre ce problème et exécuter avec succès des requêtes LIKE dans PDO.
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!