Apa yang dikatakan deceze di komentar itu benar. Ini cara yang pernah saya lakukan sebelumnya.
Pada dasarnya Anda membuat IN
bagian dari string sql dengan mengulang nilai array dan menambahkan nama yang diikat.
$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
)
)
);
Ini menghasilkan Select * from colors where type in ( :allow_0,:allow_1 )
Kemudian ulangi $allow
array dan gunakan bindValue untuk mengikat setiap variabel.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Saya menambahkan ini sebelum menyadari deceze terkait dengan pertanyaan yang memberikan contoh serupa. Saya akan meninggalkan ini di sini karena ini menunjukkan bagaimana melakukannya dengan variabel terikat bernama dan bukan ?s