用php和where规范实现mysql查询

gxwragnw  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(225)

如果 idchk_list 然后我开始 checked=1 . 我想如果 id 不在要设置的列表中 chk_list=0 ```
$update = "UPDATE data SET checked=1 WHERE id IN($chk_list)";

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

有没有什么简单的方法来设置if?
brccelvz

brccelvz1#

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

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

note:pleaseuse prepared 防止sql注入相关问题的语句

v8wbuo2f

v8wbuo2f2#

如果要显式地将checked设置为1或0,那么if应该在set区域中注意,将所有表更新到mysql默认情况下阻止这种情况发生的程度是非常危险的,因此应该将safe updates设置为0

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

wvyml7n53#

你觉得这个怎么样 CASE ? 不确定是否很整洁,但似乎可以:)

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

相关问题