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.
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.
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.
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!