Implémentation de requêtes LIKE dans PDO
La mise en œuvre de requêtes LIKE dans PDO peut poser des défis. Prenons l'exemple de requête :
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2); $stmt = $handle->prepare($query); $stmt->execute($params);
Malgré la validité de la connexion PDO et le fonctionnement d'autres requêtes, les requêtes LIKE peuvent ne pas renvoyer de résultats.
Correction de la syntaxe
Pour corriger la requête, assurez-vous que les signes % sont inclus dans le tableau $params, plutôt que dans le requête :
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Comprendre le problème
Dans la requête d'origine, les signes % sont placés dans la requête elle-même. Cependant, lorsque la requête est préparée, les valeurs de $params sont citées à l'intérieur de la chaîne déjà citée. Cela donne une requête du type :
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Cette requête ne renverra aucun résultat car les valeurs ne sont pas correctement échappées. En plaçant les signes % dans le tableau $params, ils font partie des valeurs échappées et la requête s'exécutera correctement.
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!