Heim  >  Artikel  >  Datenbank  >  Wie binde ich Parameter für eine WHERE IN-Klausel ordnungsgemäß mit PDO?

Wie binde ich Parameter für eine WHERE IN-Klausel ordnungsgemäß mit PDO?

DDD
DDDOriginal
2024-11-17 13:38:02793Durchsuche

How to Properly Bind Parameters for a WHERE IN Clause with PDO?

Bindungsparameter für WHERE IN-Klausel mit PDO

Wenn PDO zum Ausführen einer Abfrage mit einer WHERE IN-Klausel verwendet wird, funktioniert die Parameterbindung möglicherweise nicht wie erwartet. Wie im bereitgestellten Codeausschnitt gezeigt, führt die Bindung einer durch Kommas getrennten Liste von Werten an den Parameter „:ids“ zu einer Zählung von 1, obwohl das Array mehrere Werte enthält.

Erklärung

Das Problem liegt darin, wie die IN-Klausel erwartet, dass Werte formatiert werden. Beim Binden eines Arrays kombiniert PHP alle Elemente zu einem einzigen String, der von der Datenbank als ein Parameter behandelt wird. Dies führt dazu, dass die folgende Abfrage ausgeführt wird:

SELECT foo FROM bar WHERE ids IN ('1,2,3')

Die IN-Klausel erfordert jedoch, dass jeder Wert ein einzelner Parameter ist:

SELECT foo FROM bar WHERE ids IN (1, 2, 3)

Lösung

Um dieses Problem zu beheben, muss man die IN-Liste manuell in die Abfragezeichenfolge einfügen:

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'

Alternativ kann man die bindParam-Methode verwenden, um einzelne Werte anstelle eines Arrays zu binden.

Das obige ist der detaillierte Inhalt vonWie binde ich Parameter für eine WHERE IN-Klausel ordnungsgemäß mit 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