一次更新多行.基于id


Update multiple rows in once. based on id

我有一个变量$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'";

更新数据库的最佳方式是什么?我应该将字符串拆分为一个数组,然后为每个循环执行一个?或者有更好的方法吗?

除了对SQL注入完全开放之外,这一行适用于一个或多个id:

$query = "UPDATE Fields SET Value = '1'   WHERE Id IN ($ids)";

现在,为了防止SQL注入攻击(这显然取决于您),您需要分解该数组并发送多个更新语句,如下所示:

$query = "UPDATE Fields SET Value = '1'   WHERE Id = :Id";

在这里使用IN子句并没有本质上的错误。任何WHERE子句都适用于UPDATE语句。您只需要将数字视为值列表,而不是字符串。类似这样的东西:

$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";

真正重要的部分是如何首先将$ids获取到查询中。您没有在问题中显示这一点,但您需要确保自己没有暴露在SQL注入漏洞中。请确保正确地清除输入并使用准备好的语句。准备好的语句如何处理值列表与单个值,取决于所使用的数据访问技术。

使用此查询:

$query = "UPDATE Fields SET Value = '1' WHERE Id IN ($ids)";

其中$ids的格式应为als 1,2,3,4。不要忘记在执行之前检查它们(SQL注入)。