LIKE-Abfrage in PDO implementieren
Bei der Arbeit mit LIKE-Abfragen in PDO ist es wichtig zu verstehen, wie Platzhalter und Bindevariablen korrekt eingebunden werden. Dieser Artikel befasst sich mit einem Problem, mit dem ein Benutzer konfrontiert war, der LIKE-Abfragen in PDO implementierte, wobei seine Abfrage keine Ergebnisse zurückgab.
Die ursprüngliche Abfrage, wie vom Benutzer bereitgestellt, versuchte, Platzhalter mit angehängten Prozentzeichen zu verwenden:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2);
Dieser Ansatz ist jedoch falsch. Die Prozentzeichen sollten in den Bind-Variablen enthalten sein, nicht in der Abfrage selbst:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%");
Durch das Einschließen der Variablenwerte mit Prozentzeichen in den Bind-Variablen stellt die generierte Abfrage sicher, dass nach den LIKE-Klauseln gesucht wird Adressen, die die angegebenen Wörter enthalten. Ohne diese Anpassung würde die Abfrage etwa Folgendes generieren:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Diese Abfrage würde fehlschlagen, weil die Prozentzeichen in Anführungszeichen eingebettet sind, was dazu führt, dass die Suche nach Adressen sucht, die genau den Text „foo“ oder „ enthalten. bar", keine Wörter, die diese Begriffe enthalten.
Das obige ist der detaillierte Inhalt vonWie implementiert man LIKE-Abfragen mit Platzhaltern in PDO?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!