有没有办法在(My-)SQL?
中使用预准备语句选择多个值我正在尝试使用IN关键字从表中选择几行,例如:
SELECT *
FROM table
where id IN (1, 2, 3)
“1,2,3”应作为语句的参数传递。 这是可能的PHP / PDO或我必须连接值并将其直接插入到语句中(由于注入,我对此感觉不好)。
答案 0 :(得分:1)
如果您有来自用户的“内容”数组,则可以使用array_fill
构建占位符列表,通过调用"?, ?, ?, ..."
生成implode
之类的字符串阵列。或者,您可以确保数组中的所有内容都是整数(例如,使用intval
)并直接使用它来构建查询。
答案 1 :(得分:0)
我会传入一个整数数组,然后执行String.Join将它们放在准备好的语句中。你不能将任何东西注入整数!
答案 2 :(得分:-1)
尝试将你的in-list作为aconcatenated字符串传递并执行此操作(性能不是很高但它应该可以工作:我想我在某处使用这种技术看到了Joel Spolsky的答案):
SELECT * FROM table where concat('|',id,'|') like '%|1|2|3|%'