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