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!