Heim > Datenbank > MySQL-Tutorial > Wie verwende ich PDO-vorbereitete Anweisungen korrekt mit MySQL-LIKE-Abfragen?

Wie verwende ich PDO-vorbereitete Anweisungen korrekt mit MySQL-LIKE-Abfragen?

Susan Sarandon
Freigeben: 2024-12-01 07:44:14
Original
161 Leute haben es durchsucht

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

PHP PDO Prepared Statement – ​​MySQL LIKE-Abfrage

In PHP kann die Verwendung vorbereiteter Anweisungen mit PDO für MySQL LIKE-Abfragen eine Herausforderung sein. Dieser Artikel befasst sich mit einem häufigen Problem, das beim Versuch auftritt, eine LIKE-Abfrage mit vorbereiteten Anweisungen auszuführen.

Betrachten Sie die folgende Abfrage:

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;
Nach dem Login kopieren

Diese Abfrage sucht bei der Ausführung erfolgreich nach Zeichenfolgen, die den Suchbegriff enthalten direkt im MySQL-Client. Bei der Übersetzung dieser Abfrage in PDO mit vorbereiteten Anweisungen werden jedoch keine Ergebnisse zurückgegeben.

Der bereitgestellte PHP-Code veranschaulicht fehlgeschlagene Versuche, die LIKE-Abfrage mit verschiedenen Syntaxen auszuführen. Das Problem liegt in der Syntax, die zur Angabe des Suchbegriffs in der vorbereiteten Anweisung verwendet wird.

Zu den falschen Versuchen gehören:

$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));
Nach dem Login kopieren
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Nach dem Login kopieren

Der richtige Ansatz ist die Verwendung der folgenden Syntax:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Nach dem Login kopieren

Erklärung:

Vorbereitete Aussagen nicht Führen Sie einfache String-Ersetzungen durch. Die Daten werden getrennt von der Abfrage übertragen, sodass beim Einbetten von Werten keine Anführungszeichen erforderlich sind. Anführungszeichen sind nur erforderlich, wenn der tatsächlich angegebene Wert in die Abfrage eingefügt werden muss.

Das obige ist der detaillierte Inhalt vonWie verwende ich PDO-vorbereitete Anweisungen korrekt mit MySQL-LIKE-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage