Lo que dijo deceze en los comentarios es correcto. Aquí hay una forma en que he hecho esto antes.
Básicamente creas el IN
parte de la cadena sql haciendo un bucle de los valores de la matriz y agregando un nombre enlazado.
$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
)
)
);
Esto da como resultado Select * from colors where type in ( :allow_0,:allow_1 )
Luego simplemente repite el $allow
matriz y use bindValue para vincular cada variable.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Agregué esto antes de darme cuenta de que deceze estaba vinculado a una pregunta que daba un ejemplo similar. Dejaré esto aquí porque muestra cómo hacerlo con variables enlazadas nombradas y no ?s