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