Det, deceze sagde i kommentarerne, er korrekt. Her er en måde, jeg har gjort dette før.
Grundlæggende opretter du IN
del af sql-strengen ved at sløjfe matrixværdierne og tilføje et bundet navn.
$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
)
)
);
Dette resulterer i Select * from colors where type in ( :allow_0,:allow_1 )
Derefter skal du bare sløjfe $allow
array og brug bindValue til at binde hver variabel.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Jeg tilføjede dette, før jeg opdagede, at deceze var knyttet til et spørgsmål, der gav et lignende eksempel. Jeg vil efterlade dette her, fordi det viser, hvordan man gør det med navngivne bundede variabler og ikke ?s