Řešení
To by mělo fungovat, pokud $values je pole:
$query = "SELECT * FROM table WHERE id IN ($placeholders) AND product=?";
$stm->execute(array_merge($values, array($product)));
Vysvětlení
execute() očekává, že bude poskytnut jeden parametr – v tomto případě pole. Přidáním array_merge($values, array($product)) vytvoříte jedno pole pomocí $product přidáno na konec, takže dotaz by měl fungovat správně.
Podívejte se na ukázku zde:https://ideone.com/RcClX