我有一个变量,$ids它是一个分隔的字符串,所以它可以是$ids = "1“或$ids = "1,3,7,8”
我想要做的是根据这些值更新数据库,这样我就有了:
$query = "UPDATE Fields SET Value = '1' WHERE Id IN '$ids'";
还有:
$query = "UPDATE Fields SET Value = '1' WHERE Id '$ids'";
更新数据库的最好方法是什么?我应该将字符串拆分为数组,然后执行for each循环吗?还是有更好的方法?
发布于 2013-07-23 02:23:22
保留它对SQL注入开放的事实,下面这行对一个或多个id执行:
$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";
$query = "UPDATE Fields SET Value = '1' WHERE Id = :Id";
发布于 2013-07-23 02:25:11
在这里使用IN
子句本身并没有什么错误。任何WHERE
子句都适用于UPDATE
语句。您只需要将数字视为一个值列表,而不是一个字符串。如下所示:
$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";
真正重要的部分是如何将$ids
值放在第一位。您没有在问题中显示这一点,但您需要确保您自己不会受到SQL注入漏洞的影响。确保您正确地清理输入并使用准备好的语句。准备好的语句如何处理值列表与单个值,取决于所使用的数据访问技术。
发布于 2013-07-23 02:24:59
使用以下查询:
$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";
其中$ids
的格式应该是als 1,2,3,4。在执行之前不要忘记检查它们(SQL注入)。
https://stackoverflow.com/questions/17794618
复制相似问题