Valores de ligação PDO para instrução MySQL IN
Eu tenho um problema com o PDO que eu realmente gostaria de obter uma resposta para depois de ser atormentado por isso há algum tempo.
Veja este exemplo:
Eu estou vinculando uma matriz de IDs a uma instrução PDO para uso em uma instrução MySQL IN.
A matriz seria dizer:$ values = array (1,2,3,4,5,6,7,8);
A variável segura para banco de dados seria$ products = implode (',' valores $);
Assim,$ produtos seria então umCORDA com um valor de:'1,2,3,4,5,6,7,8'
A declaração seria semelhante:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (:products)
Claro,$ produtos estaria vinculado à declaração como:produtos.
No entanto, quando a instrução é compilada e os valores são vinculados, ela ficaria assim:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN ('1,2,3,4,5,6,7,8')
O problema é que ele está executando tudo dentro da instrução IN como uma única string, uma vez que a preparei como valores separados por vírgula para vincular à instrução.
O que eu realmente preciso é:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (1,2,3,4,5,6,7,8)
A única maneira de fazer isso é colocando os valores dentro da própria string sem vinculá-los, mas sei com certeza que tem que haver uma maneira mais fácil de fazer isso.