Ce que deceze a dit dans les commentaires est correct. Voici une façon dont j'ai déjà fait cela.
Fondamentalement, vous créez le IN
une partie de la chaîne sql en bouclant les valeurs du tableau et en ajoutant un nom lié.
$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
)
)
);
Cela se traduit par Select * from colors where type in ( :allow_0,:allow_1 )
Ensuite, bouclez simplement le $allow
tableau et utilisez bindValue pour lier chaque variable.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
J'ai ajouté ceci avant de réaliser que deceze était lié à une question qui donnait un exemple similaire. Je vais laisser ceci ici car il montre comment le faire avec des variables liées nommées et non ?s