PDO-Bindungswerte für MySQL IN-Anweisung

Ich habe ein Problem mit der gU, auf das ich wirklich gerne eine Antwort hätte, nachdem ich einige Zeit davon geplagt wurde.

Nehmen Sie dieses Beispiel:

Ich binde ein Array von IDs an eine PDO-Anweisung zur Verwendung in einer MySQL IN-Anweisung.

Das Array würde lauten:$ values ​​= Array (1,2,3,4,5,6,7,8);

Die datenbanksichere Variable wäre$ products = implode (',' $ values);

So,$ Produkte wäre dann einSTRING mit einem Wert von:"1,2,3,4,5,6,7,8"

Die Aussage würde so aussehen:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (:products)

Na sicher,$ Produkte wäre an die aussage gebunden als:Produkte.

Wenn die Anweisung kompiliert und Werte gebunden werden, sieht sie tatsächlich so aus:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN ('1,2,3,4,5,6,7,8')

Das Problem ist, dass alles in der IN-Anweisung als einzelne Zeichenfolge ausgeführt wird, da ich es als durch Kommas getrennte Werte vorbereitet habe, um es an die Anweisung zu binden.

Was ich eigentlich brauche ist:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (1,2,3,4,5,6,7,8)

Die einzige Möglichkeit, dies zu tun, besteht darin, die Werte innerhalb des Strings selbst zu platzieren, ohne sie zu binden. Ich weiß jedoch, dass es einen einfacheren Weg geben muss, dies zu tun.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage