PHP/MYSQL:批量更新多个值

use*_*310 3 mysql batch-file updates

我已经想出了如何使用以下内容为每条记录的值相同时进行批量更新:

UPDATE tbl SET col1='foo1' WHERE id IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)

如果我有一个逗号分隔的值字符串,与id匹配,我可以进行批量更新,以不同方式更新值,如

UPDATE tbl SET col1='1,0,1' WHERE id IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)

感谢您的建议:

编辑:

将数据发送到此查询的html页面包含以下复选框:

<input type="checkbox" name="id[]" value="1"><input type="hidden" name="col1[]" value=0> 
<input type="checkbox" name="id[]" value="2"><input type="hidden" name="col1[]" value=1>
<input type="checkbox" name="id[]" value="3"><input type="hidden" name="col1[]" value=0>
Run Code Online (Sandbox Code Playgroud)

最多20箱.

在服务器端,使用implode将发布的数组转换为逗号分隔的字符串,因此我最终得到两个字符串,值为1,0,1和id为1,2,3.但是用户可以从此页面检查多达20个框.也许我必须以某种方式操纵数组.请注意,在实际示例中,id不是1,2,3,但可能是221,433,512,600等,具体取决于用户检查的内容

Bak*_*kly 8

第二个查询将每行1,2,3更新为相同的值'1,0,1'

我想你需要的是

  UPDATE mytable
    SET myfield = CASE other_field
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
    END 
WHERE id IN (1,2,3) 
Run Code Online (Sandbox Code Playgroud)

参考 http://www.karlrixon.co.uk/writing/update-multiple-rows-with-different-values-and-a-single-sql-query/