【问题标题】:PHP MySQL Update problem with multiple condition多个条件的PHP MySQL更新问题
【发布时间】:2020-04-06 16:17:55
【问题描述】:

我需要一些解决方案如何制作一些更新数据库。

数据库结构:

我需要根据 season_numseries_id 更新 SORT 列。

图片 1 故事

图片 1 显示了 3 个不同的 series_id,第一个是 (with series_id 2),第二个是 (with series_id 3),第三个是是(series_id 为 4

在这种情况下,每个 series_id 我只有 1 个 season_num 并且 SORT 很好。

图片 2 故事

图 2 显示相同的 series_id 有 2 个 season_num 并且 SORT 也不错。

我需要使 SORT 从 1 开始并以 season_num 的最后一行结束。

图片 3 故事

在这张照片上开始问题,这个series_id有更多的season_num,对我来说有问题。

问题从 season_num 3 开始。SORTseason_num 2 开始,但需要重新启动,从 1 开始,而不是从 13 开始。

问题总故事

在图片情况下,我有一个 series_id 的总 season_num = 3,其他 我还有更多 season_num series_id

season_num 需要在所有新的 season_num 上从 1 开始。

season_num 第一行的 1,2,3,4...60 都需要从 1 开始

代码:

**请注意我的代码不起作用,如果您有任何其他想法,请告诉我!!*

//gritpas public fix
$serije_fix = $db->query("SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'series'");
$inc = 1;
$rows_fetch = $serije_fix->fetch_assoc();
$max_id=$rows_fetch['AUTO_INCREMENT'];

while ($inc != $max_id){
    $inc2 = 1;
    $inc3 = 1;
    $serije_fix2 = $db->query("SELECT * FROM series_episodes WHERE series_id='$inc'");

        while ($rows_fetch2 = $serije_fix2->fetch_assoc()){
            $serije_id = $rows_fetch2['id'];
                if ($rows_fetch2['season_num'] > '1'){
                      $db->query("UPDATE `series_episodes` SET `sort`='$inc3' WHERE id='$serije_id'");
                            $inc3 ++;
                   }else{
                          $db->query("UPDATE `series_episodes` SET `sort`='$inc2' WHERE id='$serije_id'");
                    }
        $inc2++;
        }
    $inc++;
}

【问题讨论】:

  • 请不要发布代码图片,也可以参考How to Ask

标签: php mysql sql while-loop


【解决方案1】:

让数据库为您进行排序。将您的 serjie_fix2 查询更改为:

SELECT * FROM series_episodes WHERE series_id='$inc' ORDER BY series_id, season_num, stream_id

然后,去掉$inc3if/else 子句:

while ($inc != $max_id){
  $inc2 = 1;
  $prev_season_num = 0;
  $serije_fix2 = $db->query("SELECT * FROM series_episodes WHERE series_id='$inc' ORDER BY series_id, season_num, stream_id");

  while ($rows_fetch2 = $serije_fix2->fetch_assoc()){
    $serije_id = $rows_fetch2['id'];
    if ($rows_fetch2['season_num'] != $prev_season_num) {
      $inc2 = 1;
    }
    $db->query("UPDATE `series_episodes` SET `sort`='$inc2' WHERE id='$serije_id'");
    $inc2++;
    $prev_season_num = $rows_fetch2['season_num'];
  }
  $inc++;

【讨论】:

    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 2014-03-20
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2012-01-13
    相关资源
    最近更新 更多