Ini tidak mungkin dengan cara Anda mencobanya. Anda harus memiliki placeholder terpisah untuk setiap parameter yang ingin Anda masukkan, yang lainnya akan bertentangan dengan tujuan parameter (yaitu memisahkan kode dari data).
$ids = array(2, 4, 6, 8);
// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt = $PDO->prepare($sql);
$rows = $stmt->execute($parms);
Jika Anda diizinkan untuk meneruskan array nilai ke parameter tunggal selama pengikatan, Anda secara efektif akan diizinkan untuk mengubah pernyataan SQL. Ini akan menjadi celah untuk injeksi SQL - bagaimanapun juga, tidak ada yang bisa menjamin bahwa semua nilai array akan menjadi bilangan bulat yang tidak bersalah.