我有一个与 PDO 的问题,我真的很想得到一个答案后,被它困扰了相当一段时间。
举个例子:
我将 ID 的数组绑定到一个 PDO 语句,以便在 MySQLIN 语句中使用。
数组应该是: $values = array (1,2,3,4,5,6,7,8) ;
数据库安全变量为 产品 = 内爆(’,’$值) ;
因此,$产品将是一个值为: ’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)
我实际上可以做到这一点的唯一方法是将值放在字符串本身中而不绑定它们,但是我知道肯定有更简单的方法可以做到这一点。