Оператор массива PDO IN () И заполнитель

Я нашел этот код на SO, который отлично подходит для совместного использования PDO и оператора IN ().

$values = explode(',', $values) ; # 1,4,7

$placeholders = rtrim(str_repeat('?, ', count($values)), ', ') ;
$query = "SELECT * FROM table WHERE id IN ($placeholders)";

$stm = $db->prepare($query) ;
$stm->execute($values) ;

Однако как я могу добавить еще одно дополнение к запросу, чтобы запрос выглядел следующим образом:

$query = "SELECT * FROM table WHERE id IN ($placeholders) AND product=?";
$stm = $db->prepare($query) ;
$stm->execute(array($values,$product)) ; //error happens when adding product placeholder

Я думал, что это сработает, но получаю:

Предупреждение: PDOStatement :: execute () [pdostatement .execute]: SQLSTATE [HY093]: Недействительный номер параметра: количество связанных переменных не соответствует количеству токенов в строке 3 (строка $ stm)

Есть идеи, как заставить это вести себя так, как задумано?

ОБНОВЛЕНО выполнить для массива, но не работает ..

13
задан Maverick 24 January 2012 в 18:18
поделиться