Maison  >  Article  >  développement back-end  >  Comment utiliser correctement les instructions préparées par PDO pour les requêtes MySQL LIKE ?

Comment utiliser correctement les instructions préparées par PDO pour les requêtes MySQL LIKE ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 02:05:29338parcourir

How to Correctly Use PDO Prepared Statements for MySQL LIKE Queries?

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 :

<code class="php">$ret = $prep->execute(array(':searchTerm' => '"%' . $searchTerm . '"%'));
$ret = $prep->execute(array(':searchTerm' => "%:searchTerm%"));
$ret = $prep->execute(array(':searchTerm' => ':' . $searchTerm . '%'));</code>

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 :
<code class="php">WHERE hs.hs_text LIKE :searchTerm</code>

Et l'instruction préparée doit être exécutée comme suit :

<code class="php">$ret = $prep->execute(array(':searchTerm' => '%' . $searchTerm . '%'));</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn