Heim > Datenbank > MySQL-Tutorial > Wie binde ich LIKE-Werte korrekt mit PDO in SQL-Abfragen?

Wie binde ich LIKE-Werte korrekt mit PDO in SQL-Abfragen?

Mary-Kate Olsen
Freigeben: 2024-12-09 08:49:06
Original
775 Leute haben es durchsucht

How to Correctly Bind LIKE Values with PDO in SQL Queries?

Binden von LIKE-Werten mithilfe von PDO

In SQL-Abfragen wird der LIKE-Operator für Mustervergleiche verwendet. Wenn Sie die PDO-Erweiterung zum Ausführen von Abfragen verwenden, ist es wichtig, LIKE-Werte korrekt zu binden, um mehrdeutige Ergebnisse zu vermeiden.

Ein häufiges Szenario ist das Binden einer Teilzeichenfolge an einen LIKE-Ausdruck, wie zum Beispiel:

select wrd from tablename WHERE wrd LIKE '$partial%'
Nach dem Login kopieren

Um dies mithilfe von PDO zu binden, besteht der falsche Ansatz darin, $partial% einfach durch einen benannten Parameter zu ersetzen, z. B.:

select wrd from tablename WHERE wrd LIKE ':partial%'
Nach dem Login kopieren

This funktioniert nicht, da PDO das % nicht als Platzhalterzeichen interpretiert, was zu falschen Ergebnissen führt. Stattdessen gibt es mehrere Möglichkeiten, das gewünschte Verhalten zu erreichen:

  • Verwenden Sie eine vorbereitete Anweisung mit bindParam():

Binden Sie den Parameter mit an Escape-Version der Teilzeichenfolge. Zum Beispiel:

$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :partial");
$escapedPartial = $db->quote($partial . '%');
$stmt->bindParam(':partial', $escapedPartial);
Nach dem Login kopieren
  • Verwenden Sie CONCAT(, um den LIKE-Ausdruck zu erstellen:

Erstellen Sie den LIKE-Ausdruck mithilfe von CONCAT dynamisch innerhalb der Abfrage ()-Funktion ermöglicht es Ihnen, die Notwendigkeit eines Escapezeichens zu vermeiden, da das Platzhalterzeichen am MySQL-Ende hinzugefügt wird Beispiel:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Nach dem Login kopieren
  • Behandeln Sie Sonderzeichen mit ESCAPE:

Wenn die Teilzeichenfolge Sonderzeichen wie %, _ oder , enthält, werden Sie Mit der ESCAPE-Klausel können Sie ein Platzhalterzeichen angeben, das die besondere Bedeutung des Zeichens aufhebt. Zum Beispiel:

$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escapedTerm = str_replace(array('+', '%', '_', '\'), array('++', '+%', '+_', '\+'), $term);
$stmt->bindParam(':term', $escapedTerm);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie binde ich LIKE-Werte korrekt mit PDO in SQL-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