Heim > Datenbank > MySQL-Tutorial > Warum schlagen meine PDO-LIKE-Abfragen fehl und wie kann ich sie beheben?

Warum schlagen meine PDO-LIKE-Abfragen fehl und wie kann ich sie beheben?

Susan Sarandon
Freigeben: 2024-12-28 12:39:23
Original
491 Leute haben es durchsucht

Why Do My PDO LIKE Queries Fail, and How Can I Fix Them?

Implementierung von LIKE-Abfragen in PDO

Die Implementierung von LIKE-Abfragen in PDO kann eine Herausforderung darstellen. Betrachten Sie die Beispielabfrage:

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

Trotz der Gültigkeit der PDO-Verbindung und der Funktionsweise anderer Abfragen geben LIKE-Abfragen möglicherweise keine Ergebnisse zurück.

Syntax korrigieren

Um die Abfrage zu korrigieren, stellen Sie sicher, dass die %-Zeichen im $params-Array enthalten sind und nicht im Abfrage:

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

Das Problem verstehen

In der ursprünglichen Abfrage wurden die %-Zeichen in der Abfrage selbst platziert. Wenn die Abfrage jedoch vorbereitet wird, werden die Werte von $params innerhalb der bereits in Anführungszeichen gesetzten Zeichenfolge in Anführungszeichen gesetzt. Dies führt zu einer Abfrage wie:

SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Nach dem Login kopieren

Diese Abfrage gibt keine Ergebnisse zurück, da die Werte nicht ordnungsgemäß maskiert sind. Durch Platzieren der %-Zeichen im $params-Array werden sie Teil der mit Escapezeichen versehenen Werte und die Abfrage wird korrekt ausgeführt.

Das obige ist der detaillierte Inhalt vonWarum schlagen meine PDO-LIKE-Abfragen fehl und wie kann ich sie beheben?. 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