Значения привязки 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)

Единственный способ, которым я могу это сделать, - это поместить значения в саму строку, не связывая их, однако я точно знаю, что для этого должен быть более простой способ.

Ответы на вопрос(8)

Ваш ответ на вопрос