Heim  >  Artikel  >  Backend-Entwicklung  >  Wie binde ich LIKE-Werte mit dem %-Zeichen in PDO?

Wie binde ich LIKE-Werte mit dem %-Zeichen in PDO?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 16:59:03680Durchsuche

How to Bind LIKE Values with the % Character in PDO?

LIKE-Werte mit %-Zeichen in PDO binden

Bei PDO-gesteuerten SQL-Abfragen kommt es häufig vor, dass LIKE-Werte gebunden werden müssen, die das %-Platzhalterzeichen enthalten. Durch das Binden solcher Werte wird die Verhinderung von SQL-Injection sichergestellt. Allerdings kann die Syntax hierfür verwirrend sein.

Abfrage mit LIKE '%': Überlegungen zur Bindung

Bedenken Sie die Abfrage:

select wrd from tablename WHERE wrd LIKE '$partial%'

Hier möchten Sie Binden Sie die Variable $partial mithilfe von PDO. Das Dilemma entsteht bei der Entscheidung, wie das %-Zeichen gebunden werden soll.

Optionen für die Bindung

Option 1:

select wrd from tablename WHERE wrd LIKE ':partial%'

Bind :partial to $ partial="somet".

Option 2:

select wrd from tablename WHERE wrd LIKE ':partial'

Bind :partial to $partial="somet%".

Option 3 (Alternative):

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

Führen Sie eine Zeichenfolgenverkettung mit der MySQL-CONCAT-Funktion durch.

Besondere Fallüberlegungen

Wenn das gesuchte Teilwort enthält B. ein %- oder Unterstrichzeichen, ist eine besondere Behandlung erforderlich. Die Lösung besteht darin, die ESCAPE-Klausel in der PDO-Anweisung zu verwenden:

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

Diese Technik stellt sicher, dass die Sonderzeichen innerhalb des LIKE-Ausdrucks korrekt interpretiert werden.

Das obige ist der detaillierte Inhalt vonWie binde ich LIKE-Werte mit dem %-Zeichen in PDO?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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