Heim  >  Fragen und Antworten  >  Hauptteil

Array - Einmalige PHP+MySQL-Aktualisierung?

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? !

代言代言2658 Tage vor737

Antworte allen(5)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-06-12 09:21:49

    先写一个数组存放会员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'];
    }

    Antwort
    0
  • 欧阳克

    欧阳克2017-06-12 09:21:49

    目前采纳的 @tony_yin 的方案是最基本的方案。在实际应用中要注意在for循环开始前要开启transaction,结束后提交transaction。否则性能低不说,如果在for循环过程中程序出现问题很容易导致只有一部分用户的p值更新了,另一部分却没有更新。

    我这里补充另外一个方案:既然是mysql,那么可以使用 INSERT ... ON DUPLICATE KEY UPDATE 的批量更新的方式。示例SQL:

    INSERT INTO `user`
     ( `id`, `p` ) 
    VALUES
     ( 11111, 1),
     ( 22222, 2),
     -- ...
     ( 99999, 9)
    ON DUPLICATE KEY UPDATE
      `id` = VALUES(`id`),
      `p` = VALUES(`p`);

    Antwort
    0
  • PHP中文网

    PHP中文网2017-06-12 09:21:49

    update 会员表 set p = xxx

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:21:49

    查出会员的id,一次修改。
    数据量大就分批次处理

    update table set p = value where uid in(1,2,3)
    1. 数据量小的放到循环里也无所谓

    2. 具体看你自己的需求

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-06-12 09:21:49

    我并没看懂你的问题 以后提问请描述清楚 不然就是个垃圾问题
    我觉得你应该是想问捞出一部分会员 一次性统一设置他们的p字段是吧
    `
    update table set p = value where uid in(1,2,3)
    `

    后面的where条件根据具体场景自己写

    或者你最好把你的问题重新描述下

    Antwort
    0
  • StornierenAntwort