Gehen Sie davon aus, dass die Mitgliedsinformationen aus der Datenbank abgerufen werden. Das Mitglied verfügt über ein Feld namens p Nachdem ich PHP verwendet habe, wie soll das Ende verarbeitet werden? !
先写一个数组存放会员id和修改p值
$vips = array( array( 'id' => 1, 'p' => 1 ), array( 'id' => 2, 'p' => 2 ), ... ); foreach ($vips as $vip) { 执行sql语句 update 会员表 set p = $vip['p'] where id = $vip['id']; }
目前采纳的 @tony_yin 的方案是最基本的方案。在实际应用中要注意在for循环开始前要开启transaction,结束后提交transaction。否则性能低不说,如果在for循环过程中程序出现问题很容易导致只有一部分用户的p值更新了,另一部分却没有更新。
我这里补充另外一个方案:既然是mysql,那么可以使用 INSERT ... ON DUPLICATE KEY UPDATE 的批量更新的方式。示例SQL:
INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO `user` ( `id`, `p` ) VALUES ( 11111, 1), ( 22222, 2), -- ... ( 99999, 9) ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `p` = VALUES(`p`);
update 会员表 set p = xxx
查出会员的id,一次修改。数据量大就分批次处理
update table set p = value where uid in(1,2,3)
数据量小的放到循环里也无所谓
具体看你自己的需求
我并没看懂你的问题 以后提问请描述清楚 不然就是个垃圾问题 我觉得你应该是想问捞出一部分会员 一次性统一设置他们的p字段是吧`update table set p = value where uid in(1,2,3)`
后面的where条件根据具体场景自己写
或者你最好把你的问题重新描述下
先写一个数组存放会员id和修改p值
目前采纳的 @tony_yin 的方案是最基本的方案。在实际应用中要注意在for循环开始前要开启transaction,结束后提交transaction。否则性能低不说,如果在for循环过程中程序出现问题很容易导致只有一部分用户的p值更新了,另一部分却没有更新。
我这里补充另外一个方案:既然是mysql,那么可以使用
INSERT ... ON DUPLICATE KEY UPDATE
的批量更新的方式。示例SQL:查出会员的id,一次修改。
数据量大就分批次处理
数据量小的放到循环里也无所谓
具体看你自己的需求
我并没看懂你的问题 以后提问请描述清楚 不然就是个垃圾问题
我觉得你应该是想问捞出一部分会员 一次性统一设置他们的p字段是吧
`
update table set p = value where uid in(1,2,3)
`
后面的where条件根据具体场景自己写
或者你最好把你的问题重新描述下