У меня проблема с PDO, что я действительно хотел бы получить ответ за то, что вас так долго мучает.
Возьмем этот пример:
Я связываю массив ID с инструкцией PDO для использования в инструкции MySQL IN.
Массив будет говорить: $values = array (1,2,3,4,5,6,7,8);
Переменная, безопасная для базы данных, будет $products = implode (',' $values);
Итак, $products будет тогда 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)
Конечно, $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)
Единственный способ, которым я действительно могу это сделать, - поместить значения внутри самой строки, не связывая их, однако я знаю, что для этого должен быть более простой способ сделать это.