赞
踩
我有一个问题,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)
我唯一可以做到这一点的方法是将值放在字符串本身内而不绑定它们,但我知道肯定有一个更简单的方法来做到这一点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。