Rozwiązanie
To powinno działać, jeśli $values jest tablicą:
$query = "SELECT * FROM table WHERE id IN ($placeholders) AND product=?";
$stm->execute(array_merge($values, array($product)));
Wyjaśnienie
execute() oczekuje podania jednego parametru - w tym przypadku tablicy. Dodając array_merge($values, array($product)) tworzysz jedną tablicę z $product dodane na końcu, więc zapytanie powinno działać poprawnie.
Zobacz demo tutaj:https://ideone.com/RcClX