To, co řekl deceze v komentářích, je pravda. Zde je způsob, jak jsem to udělal dříve.
V podstatě vytvoříte IN
část řetězce sql opakováním hodnot pole a přidáním vázaného názvu.
$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
)
)
);
Výsledkem je Select * from colors where type in ( :allow_0,:allow_1 )
Pak stačí zacyklit $allow
pole a použijte bindValue ke svázání každé proměnné.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Přidal jsem to předtím, než jsem si uvědomil, že deceze souvisí s otázkou, která uváděla podobný příklad. Nechám to zde, protože ukazuje, jak to udělat s pojmenovanými vázanými proměnnými a ne ?s