MySQL IN语句的PDO绑定值
我有一个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)
当然,$产品将被声明为:产品。
但是,当编译语句并绑定值时,它实际上看起来像这样:
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)
我实际上可以实现这一点的唯一方法是将值放在字符串本身而不绑定它们,但我知道必须有一种更简单的方法来做到这一点。