Heim >Backend-Entwicklung >PHP-Tutorial >Wie strukturiert man LIKE-Abfragen mit Parametern in PDO richtig?

Wie strukturiert man LIKE-Abfragen mit Parametern in PDO richtig?

DDD
DDDOriginal
2024-11-11 11:38:031043Durchsuche

How to Properly Structure LIKE Queries with Parameters in PDO?

Implementieren der LIKE-Abfrage in PDO

Wenn Sie PDO zum Ausführen von Abfragen mit dem LIKE-Operator verwenden, ist es wichtig zu verstehen, wie die richtig strukturiert wird Abfrage und die Parameter. Betrachten Sie die folgende Abfrage:

"$query = "SELECT * FROM tbl WHERE Adresse LIKE '%?%' ODER Adresse LIKE '%?%'";
$params = array($var1, $ var2);"

Fehler:
Die Abfrage führt dazu, dass aufgrund der Prozentzeichen keine Datensätze zurückgegeben werden (%) sind in der Abfrage selbst enthalten und werden nicht als Parameter angegeben.

Lösung:

Um dieses Problem zu beheben:

$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);

Erklärung:

Durch die Einbeziehung der Prozentzeichen in die Parameter stellen wir sicher, dass sie ordnungsgemäß behandelt werden Platzhalter, wenn die Abfrage ausgeführt wird. Dadurch wird PDO angewiesen, die entsprechenden Werte durch die tatsächlichen Suchbegriffe zu ersetzen, sodass die LIKE-Operation korrekt ausgeführt werden kann.

Wenn Sie die generierte Abfrage aus Ihrem Originalcode untersuchen, werden Sie etwas in der Art von „SELECT *“ bemerken. FROM tbl WHERE Adresse LIKE '%"foo"%' ODER Adresse LIKE '%"bar"%', wobei die vorbereitete Anweisung fälschlicherweise die Werte innerhalb einer bereits in Anführungszeichen gesetzten Zeichenfolge zitiert. Wenn Sie den oben beschriebenen richtigen Ansatz befolgen, können Sie dieses Problem beheben und LIKE-Abfragen in PDO erfolgreich ausführen.

Das obige ist der detaillierte Inhalt vonWie strukturiert man LIKE-Abfragen mit Parametern in PDO richtig?. 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