No puede pasar varios valores en un solo marcador de posición. Tendrá que ingresar un marcador de posición diferente para cada valor que se pasará a IN ()
. Como no sabe cuántos habrá, use ?
en lugar de parámetros con nombre.
$values = explode(',', $values) ;
$placeholders = rtrim(str_repeat('?, ', count($values)), ', ') ;
$query = "SELECT * FROM table WHERE id IN ($placeholders)";
$stm = $db->prepare($query) ;
$stm->execute($values) ;