使用PHP和WHERE规范的MySQL查询

时间:2018-09-24 18:11:00

标签: php mysql

使用此更新查询,如果id位于chk_list中,那么我设置了checked=1。我想如果id不在列表中以设置chk_list=0

$update = "UPDATE data SET checked=1 WHERE id IN($chk_list)";

$qry = $db->query($update);

在哪里设置是否有任何简单方法?

3 个答案:

答案 0 :(得分:2)

您可以使用IF()函数来确定要设置的值。请执行以下操作:

$update = "UPDATE data SET checked = (IF(id IN ($chk_list), 1, 0))";
$qry = $db->query($update);

注意: use Prepared Statements to prevent SQL injection个相关问题

答案 1 :(得分:1)

如果您想将 checked 显式设置为1或0,则if应该在设置区域中 请注意,将所有表更新到MySQL默认阻止这种情况的程度非常危险,并且应将安全更新设置为0

UPDATE data SET checked = IF(id IN ($chk_list), 1,0)

答案 2 :(得分:1)

使用CASE怎么办?不确定是否整洁,但似乎可以使用:)

UPDATE data SET checked= 
CASE
  WHEN id IN ($chk_list) THEN 1
  WHEN id NOT IN ($chk_list) THEN 0
END