O que deceze disse nos comentários está correto. Aqui está uma maneira que eu fiz isso antes.
Basicamente você cria o
IN
parte da string sql fazendo um loop dos valores da matriz e adicionando um nome vinculado. $allow = array( 'red', 'blue' );
$sql = sprintf(
"Select * from colors where type in ( %s )",
implode(
',',
array_map(
function($v) {
static $x=0;
return ':allow_'.$x++;
},
$allow
)
)
);
Isso resulta em
Select * from colors where type in ( :allow_0,:allow_1 )
Em seguida, basta fazer um loop
$allow
array e use bindValue para vincular cada variável. foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Eu adicionei isso antes de perceber o deceze vinculado a uma pergunta que dava um exemplo semelhante. Vou deixar isso aqui porque mostra como fazer isso com variáveis vinculadas nomeadas e não ?s