Heim > Datenbank > MySQL-Tutorial > Wie binde ich LIKE-Parameter sicher mit Platzhaltern in PDO?

Wie binde ich LIKE-Parameter sicher mit Platzhaltern in PDO?

Patricia Arquette
Freigeben: 2024-12-06 03:09:12
Original
904 Leute haben es durchsucht

How to Safely Bind LIKE Parameters with Wildcards in PDO?

Binden von LIKE-Werten mit %-Platzhaltern in PDO

PDO bietet eine sichere Möglichkeit, SQL-Abfragen mit gebundenen Parametern auszuführen und so SQL-Injection-Schwachstellen zu verhindern. Beim Binden von LIKE-Parametern, die Platzhalterzeichen wie % enthalten, kann es zu Verwirrung kommen.

In der folgenden Abfrage versuchen wir, die Variable $partial% mithilfe von PDO zu binden:

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

Es ist wichtig zu verstehen, wie PDO mit solchen Bindungen umgeht. Der richtige Ansatz hängt von Ihren spezifischen Anforderungen ab.

Option 1: Mit teilweisem Platzhalter (%) am Ende binden

Ja, das ist eine gültige Option:

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

wobei :partial an $partial="somet" gebunden ist.

Option 2: Mit partiellem Platzhalter (%) innerhalb von binden Wert

Sie können auch diesen Ansatz verwenden:

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

wobei :partial an $partial="somet%" gebunden ist.

Alternative: CONCAT-Funktion verwenden

Wenn Sie möchten, können Sie die Zeichenfolgenverkettung innerhalb der MySQL-Abfrage selbst durchführen:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Nach dem Login kopieren

Speziell Zeichenverarbeitung

Wenn Ihr Teilwort Sonderzeichen wie %, _ oder enthält, müssen Sie diese manuell maskieren, bevor Sie den Parameter binden. Der folgende Code demonstriert dies:

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

Das obige ist der detaillierte Inhalt vonWie binde ich LIKE-Parameter sicher mit Platzhaltern in PDO?. 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