Det deceze sa i kommentarerna är korrekt. Här är ett sätt jag har gjort detta förut.
I grund och botten skapar du IN
del av sql-strängen genom att slinga array-värdena och lägga till ett bundet namn.
$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
)
)
);
Detta resulterar i Select * from colors where type in ( :allow_0,:allow_1 )
Sedan är det bara att loopa $allow
array och använd bindValue för att binda varje variabel.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Jag lade till detta innan jag insåg att deceze länkade till en fråga som gav ett liknande exempel. Jag lämnar detta här eftersom det visar hur man gör det med namngivna bundna variabler och inte ?s