Я нашел этот код на 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)
Есть идеи, как заставить это вести себя так, как задумано?
ОБНОВЛЕНО выполнить для массива, но не работает ..