Instruction préparée PHP PDO - Requête MySQL LIKE
Les instructions préparées PDO offrent un moyen sûr et efficace d'exécuter des requêtes SQL avec des paramètres dynamiques. Lorsque vous travaillez avec des requêtes MySQL LIKE, il est crucial d'utiliser une syntaxe appropriée.
Question :
Un développeur est confronté à des difficultés lors de l'exécution d'une requête MySQL LIKE à l'aide de PDO en PHP, malgré la requête fonctionne correctement dans le client MySQL. Le code ne parvient pas à renvoyer de résultats et diverses variantes de syntaxe ont été tentées sans succès.
Réponse :
La syntaxe incorrecte dans le code se trouve dans les instructions de préparation et d'exécution. . Le problème est l’utilisation inutile de guillemets doubles et une liaison de paramètres incorrecte. Voici le code corrigé :
$sql = 'SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE :searchTerm LIMIT 25'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Explication :
Les instructions préparées fonctionnent en envoyant la requête à la base de données sans aucune valeur de paramètre intégrée. Les paramètres sont envoyés séparément pour être liés par le moteur de base de données. L'ajout de guillemets doubles à la valeur du paramètre dans l'instruction d'exécution est incorrect car PDO mettra automatiquement la valeur du paramètre entre guillemets si nécessaire.
De plus, l'opérateur LIKE nécessite des pourcentages autour du terme de recherche pour permettre des correspondances partielles. Dans le code incorrect, le terme de recherche est incorrectement délimité par des guillemets au lieu des signes de pourcentage nécessaires.
En corrigeant ces erreurs de syntaxe, l'instruction préparée par PDO peut être utilisée pour exécuter avec succès les requêtes MySQL 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!