Saya bisa memikirkan beberapa solusi.
Salah satu solusinya mungkin dengan membuat tabel sementara. Lakukan penyisipan ke dalam tabel untuk setiap parameter yang akan Anda miliki dalam klausa in. Kemudian lakukan penggabungan sederhana terhadap tabel sementara Anda.
Metode lain mungkin dengan melakukan sesuatu seperti ini.
$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$parmcount=count($parms); // = 4
$inclause=implode(',',array_fill(0,$parmcount,'?')); // = ?,?,?,?
$sql='SELECT age, name FROM people WHERE id IN (%s)';
$preparesql=sprintf($sql,$inclause); // = example statement used in the question
$st=$dbh->prepare($preparesql);
$st->execute($parms);
Saya menduga, tetapi tidak memiliki bukti, bahwa solusi pertama mungkin lebih baik untuk daftar yang lebih besar, dan yang terakhir akan bekerja untuk daftar yang lebih kecil.
Untuk membuat @orrd senang di sini adalah versi singkatnya.
$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$st=$dbh->prepare(sprintf('SELECT age, name FROM people WHERE id IN (%s)',
implode(',',array_fill(0,count($parms),'?'))));
$st->execute($parms);