【发布时间】:2016-05-11 14:01:21
【问题描述】:
我在 PHP 中编写了一个 mysql 更新查询,防止 sql 注入:
UPDATE table1 status = 1 WHERE id IN ( ? ) and active = ?, array(implode(',' $ids), 1)
其中 id 字段为整数数据类型。
我在执行这个问题时遇到了问题,因为 implode 生成了一个逗号分隔的字符串,并且 id 没有用 IN 子句分配,因为它变成了:
array(implode(',' $ids) == array(1,2,3, 1)
前三个是 id,数组中的第四个值是活动字段值,但语句考虑数组中的前两个值(即 1,2)来替换“?”在查询中
注意:如果不使用防止sql注入作为相同查询,查询没有问题
UPDATE table1 SET status = 1 WHERE id IN ( 1,2,3 ) and active = 1
工作正常。仅与 PHP 内爆函数有关。
【问题讨论】: