Detta är inte möjligt som du försöker. Du måste ha en separat platshållare för varje parameter du vill skicka in, allt annat skulle trotsa syftet med parametrar (som är att separera kod från 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);
Om du fick skicka in en array av värden till en enskild parameter under bindningen, skulle du i praktiken få ändra SQL-satsen. Detta skulle vara ett kryphål för SQL-injektion - ingenting kunde garantera att alla arrayvärden trots allt skulle vara oskyldiga heltal.