Wat deceze zei in de commentaren klopt. Hier is een manier waarop ik dit eerder heb gedaan.
In principe creëer je de IN
deel van de sql-tekenreeks door de arraywaarden in een lus te plaatsen en een gebonden naam toe te voegen.
$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
)
)
);
Dit resulteert in Select * from colors where type in ( :allow_0,:allow_1 )
Loop dan gewoon de $allow
array en gebruik bindValue om elke variabele te binden.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Ik heb dit toegevoegd voordat ik me realiseerde dat deceze gekoppeld was aan een vraag die een soortgelijk voorbeeld gaf. Ik zal dit hier laten omdat het laat zien hoe het moet met benoemde gebonden variabelen en niet met ?s