Ciò che Deceze ha detto nei commenti è corretto. Ecco un modo in cui l'ho fatto prima.
Fondamentalmente crei il IN
parte della stringa sql eseguendo il ciclo dei valori dell'array e aggiungendo un nome associato.
$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
)
)
);
Ciò si traduce in Select * from colors where type in ( :allow_0,:allow_1 )
Quindi esegui il ciclo di $allow
array e usa bindValue per associare ogni variabile.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
L'ho aggiunto prima di rendermi conto di deceze legato a una domanda che dava un esempio simile. Lo lascerò qui perché mostra come farlo con variabili associate denominate e non ?s