Solution
Cela devrait fonctionner, si $values est un tableau :
$query = "SELECT * FROM table WHERE id IN ($placeholders) AND product=?";
$stm->execute(array_merge($values, array($product)));
Explication
execute() s'attend à ce qu'un paramètre - dans ce cas un tableau - soit fourni. En ajoutant array_merge($values, array($product)) vous créez un tableau avec $product ajouté à la fin, la requête devrait donc fonctionner correctement.
Voir la démo ici :https://ideone.com/RcClX