Значения привязки PDO для оператора MySQL IN
У меня есть проблема с PDO, на которую я действительно хотел бы получить ответ после того, как меня мучили в течение достаточно долгого времени.
Возьмите этот пример:
Я связываю массив идентификаторов с оператором PDO для использования в операторе MySQL IN.
Массив будет сказать:$ values = array (1,2,3,4,5,6,7,8);
Безопасная для базы данных переменная будет$ products = implode (',' $ values);
Так,$ продуктов будет тогдаSTRING со значением:'1,2,3,4,5,6,7,8'
Заявление будет выглядеть так:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (:products)
Конечно,$ продуктов будет связан с утверждением как:продукты.
Однако, когда оператор скомпилирован и значения связаны, это будет выглядеть так:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN ('1,2,3,4,5,6,7,8')
Проблема в том, что он выполняет все внутри оператора IN в виде одной строки, учитывая, что я подготовил его как разделенные запятыми значения для привязки к оператору.
Что мне действительно нужно, это:
SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (1,2,3,4,5,6,7,8)
Единственный способ, которым я могу это сделать, - это поместить значения в саму строку, не связывая их, однако я точно знаю, что для этого должен быть более простой способ.