To, co powiedział deceze w komentarzach, jest poprawne. Oto sposób, w jaki robiłem to wcześniej.
Zasadniczo tworzysz IN
część ciągu sql przez zapętlenie wartości tablicy i dodanie powiązanej nazwy.
$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
)
)
);
Powoduje to Select * from colors where type in ( :allow_0,:allow_1 )
Następnie po prostu zapętl $allow
tablicy i użyj bindValue do powiązania każdej zmiennej.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Dodałem to, zanim zdałem sobie sprawę z deceze powiązanego z pytaniem, które podało podobny przykład. Zostawię to tutaj, ponieważ pokazuje, jak to zrobić z nazwanymi powiązanymi zmiennymi, a nie ?s