Dit is niet mogelijk zoals u het probeert. Je moet een aparte tijdelijke aanduiding hebben voor elke parameter die je wilt invoeren, al het andere zou het doel van parameters (het scheiden van code van gegevens) tarten.
$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);
Als u tijdens de binding een reeks waarden aan een enkele parameter zou mogen doorgeven, zou u in feite de SQL-instructie mogen wijzigen. Dit zou een maas in de wet zijn voor SQL-injectie - niets kan garanderen dat alle arraywaarden tenslotte onschuldige gehele getallen zijn.