我有一个SQL查询,采用以下形式:
UPDATE foo SET flag=true WHERE id=?
我还有一个PHP数组,其中包含一个ID列表.除了解析之外,实现此目的的最佳方法是什么,如下所示,......
foreach($list as $item){ $querycondition = $querycondition . " OR " . $item; }
...并使用WHERE
条款中的输出?
这将实现同样的目标,但可能不会产生很大的速度提升,但看起来更好.
mysql_query("UPDATE foo SET flag=true WHERE id IN (".implode(', ',$list).")");
您应该能够使用IN子句(假设您的数据库支持它):
UPDATE foo
SET flag=true
WHERE id in (1, 2, 3, 5, 6)
使用IN语句.提供以逗号分隔的键值列表.您可以使用implode
功能轻松完成.
UPDATE foo SET flag = true WHERE id IN (1, 2, 3, 4, 5, ...)
或者你可以使用条件:
UPDATE foo SET flag = true WHERE flag = false
或子查询:
UPDATE foo SET flag = true WHERE id IN (SELECT id FROM foo WHERE .....)