Correction de la syntaxe LIKE lors de l'utilisation de bindParam pour les requêtes MySQL PDO
Dans les requêtes MySQL PDO, l'utilisation de LIKE avec bindParam peut être délicate. Cette question illustre un problème courant rencontré lors de la tentative de recherche de noms d'utilisateur commençant par une chaîne spécifique.
La syntaxe incorrecte fournie dans la question utilise des guillemets simples internes autour de la variable $term :
$term = "'$term%'";
Pour résoudre ce problème, supprimez simplement les guillemets simples internes :
$term = "$term%";
Lors de l'utilisation de bindParam, PDO gère automatiquement les guillemets de chaîne. L'ajout de guillemets inutiles dans la variable $term peut entraîner une correspondance LIKE incorrecte.
L'instruction corrigée devrait ressembler à ceci :
$sql = "SELECT username FROM `user` WHERE username LIKE :term LIMIT 10"; $core = Connect::getInstance(); $stmt = $core->dbh->prepare($sql); $stmt->bindParam(':term', $term, PDO::PARAM_STR); $stmt->execute(); $data = $stmt->fetchAll();
Cela correspondra correctement aux noms d'utilisateur commençant par la variable $term , par exemple "a".
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!