Maison > développement back-end > tutoriel php > Pourquoi mon instruction préparée PHP PDO avec la requête MySQL LIKE ne renvoie-t-elle aucun résultat ?

Pourquoi mon instruction préparée PHP PDO avec la requête MySQL LIKE ne renvoie-t-elle aucun résultat ?

DDD
Libérer: 2024-10-31 10:41:02
original
1025 Les gens l'ont consulté

Why does my PHP PDO prepared statement with MySQL LIKE query return no results?

Déclaration préparée PHP PDO - Requête MySQL LIKE

Problème :
Lors de l'exécution d'une requête MySQL LIKE à l'aide PDO de PHP, la recherche ne renvoie aucun résultat.

Requête :

<code class="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;</code>
Copier après la connexion

Code PHP :

<code class="php">$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.'%"'));</code>
Copier après la connexion

Solution :
L'erreur réside dans la valeur attribuée au paramètre :searchTerm dans la méthodeexecute(). Les guillemets doubles ne sont pas nécessaires lors de l'utilisation d'instructions préparées.

Code PHP corrigé :

<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
Copier après la connexion

Explication :
Les instructions préparées gèrent les données séparément de la requête. Ils n'effectuent pas de remplacement de chaîne. Les guillemets ne sont ajoutés que lors de l'intégration de valeurs directement dans la requête.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal