
Déclaration préparée PHP PDO : requête MySQL LIKE
Lors de l'exécution d'une requête LIKE à l'aide de la classe PDO de PHP, il est essentiel de gérer correctement l'opérateur LIKE et préparez la déclaration correctement.
Problème : Dans le code fourni, la requête d'origine fonctionnait avec le client MySQL mais rencontrait des problèmes lors de la migration vers PHP.
Solution : L'erreur réside dans la clause WHERE de la méthode prepare. Les lignes suivantes sont incorrectes :
1 2 3 | <code class = "php" > $ret = $prep ->execute( array ( ':searchTerm' => '"%' . $searchTerm . '"%' ));
$ret = $prep ->execute( array ( ':searchTerm' => "%:searchTerm%" ));
$ret = $prep ->execute( array ( ':searchTerm' => ':' . $searchTerm . '%' ));</code>
|
Copier après la connexion
Explication :
-
Déclarations préparées : Elles transportent les données séparément de la requête, ce qui rend guillemets inutiles lors de l'intégration de valeurs.
-
Opérateur LIKE : Nécessite un caractère générique, tel que % ou _, pour représenter des séquences de caractères arbitraires.
-
Requête correcte : La clause WHERE correcte doit être :
1 | <code class = "php" >WHERE hs.hs_text LIKE :searchTerm</code>
|
Copier après la connexion
Et l'instruction préparée doit être exécutée comme suit :
1 | <code class = "php" > $ret = $prep ->execute( array ( ':searchTerm' => '%' . $searchTerm . '%' ));</code>
|
Copier après la connexion
Maintenant, la requête doit renvoyer les résultats souhaités .
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!