PDO не может связать массивы с :parameter
. Для этого вам нужна вспомогательная функция.
Также в вашем примере, буквенная строка '10,5,4,3'
будет получена как одно значение. Привязка параметра превратит его в .. id IN ('10,5,4,3')
, а не в сравнение списка.
Обходной путь в вашем случае - использовать динамический SQL и экранирование.
$values = preg_replace('/[^\d,]/', "", $_POST['values']);
$query = "SELECT * FROM table WHERE id IN ($values)";
Я лично использую функцию оболочки / помощника , которая имеет специальный синтаксис для массивов (но на самом деле у вас его нет для начала, так что это будет двойной обход):
db("SELECT * FROM table WHERE id IN (??)", explode(",",$values));