我有一个动态生成的表格,列出了给定组中的所有用户,每个用户的姓名旁边都有一个复选框。组管理员可以选择/取消选择这些复选框以包含/排除用户。在 MySQL 表中,每个用户都有一个状态列,即 a0
或 a 1
。我使用隐藏值来处理框的未选中状态,并将数据作为数组发布,每个用户的唯一 ID 作为键。
所以我的 POST 数据是一个这样的数组:
Array ( [105] => 1 [106] => 1 [107] => 0 [108] => 0 [109] => 1 )
现在,我需要更新数据库。这是我希望查询的外观:
INSERT INTO users (uid,status) VALUES (105,1),(106,1),(107,0),(108,0),(109,1)
ON DUPLICATE KEY UPDATE status=VALUES(status);
当然,这不会 INSERT 任何内容,但它会使用单个查询更新每一行。
我想不通的是如何使用数组来生成查询。特别是考虑到用户数量(数组中的项目数)会有所不同。
经过进一步研究,我的问题似乎可以归结为:
是否可以implode
用来转动这个数组:
Array ( [105] => 1 [106] => 1 [107] => 0 [108] => 0 [109] => 1 )
进入这个字符串:
(105,1),(106,1),(107,0),(108,0),(109,1)
可以灵活地在数组中包含更多或更少的项目?