• PHP 使用分页方法修改多数据字段


    这个标题听起来很别扭,需求是这样的。mysql中的customer表有5000条数据。现在要给customer表添加一个order_num 字段,客户每下单一次就update这个字段+1.

    是的,新增加的字段只要之后客户完成下单就会+1,问题是,之前客户下过多少单子,也要同步到order_num。

    所以,思路就是这样的。如果一次取出5000的客户,循环每一个客户在去order表查找订单个数。估计set_time_limit就超时了,然后呢,想起了php的分页请求,等一个limit 分页大小的数据请求修改完成后,在分页请求下一页的数据进行修改。

    伪代码:

      $page=  isset($_GET["page"])?$_GET["page"]:'';  # 当前第N分页
            if(!$page){
                $page=1;
            }
              echo "当前第{$page}页<hr>";
    
            $pageSize=3;  # 分页大小
            $offset=$page==1?0:($page-1)*$pageSize;  # 当前offset
            
            sleep(5); # 睡眠5秒,模拟后台程序执行
            echo "select * from customer where 1=1 limit {$pageSize} offset {$offset}  <hr>";  
            if($page*$pageSize>13){  # count 为空 更新完成
                echo '更新完成';
                exit();
            }
    
             $page++;      
          echo   $url="/crontab/customer-order-num?page={$page}";
          echo "<script> window.location.href='{$url}'; </script>";

    Yii2 分页更新字段订单量:

           $page = isset($_GET["page"]) ? $_GET["page"] : '';  # 当前第N分页
            if (!$page) {
                $page = 1;
            }
            echo "当前第{$page}页<hr>";
    
            $pageSize = 3;  # 分页大小
            $offset = $page == 1 ? 0 : ($page - 1) * $pageSize;  # 当前offset
    
            sleep(3); # 睡眠5秒,模拟后台程序执行
            $customerModel = commonmodelsCustomer::find()->offset($offset)->limit($pageSize)->all();  # LIMIT 3 OFFSET 3   三的倍数
            if (!empty($customerModel)) {
                foreach ($customerModel as $value) {
                    $orderCount = commonmodelsOrder::find()->where("cid=:cid and status=3")->params(["cid" => $value->id])->count(); # 订单之和 状态3:完成
                    if ($orderCount) {
                        commonmodelsCustomer::updateAll(["order_num" => $orderCount], "id={$value->id}");
                    }
                }
            } else {  # count 为空 更新完成
                echo '更新完成';
                exit();
            }
    
            $page++;
            echo $url = "/crontab/customer-order-num?page={$page}";
            echo "<script> window.location.href='{$url}'; </script>";
        }

  • 相关阅读:
    Linux 命令集合
    vsftpd 创建虚拟用户
    Java Web Socket
    Linux 命令集合
    YII 1.0 上传文件
    YII 1.0 扩展第三方类
    YII 1.0 发表文章用到的小物件
    YII 1.0 增删改查
    mysql 日志
    YII 1.0 小功能总结
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608038.html
Copyright © 2020-2023  润新知