wanmeikakaxi 2023-04-18 11:51 采纳率: 77.8%
浏览 40
已结题

php mysql代码问题,这段代码中step和nums的疑问怎么解决?

以下是完整的示例代码,其中代码中的step和nums有个疑问,假设总记录是从数据表查询的结果,该如何分次数?

下面代码中,nums以及step都是固定值,假设查询总记录是1563000,每次取1000或2000或以上,应该怎么计算step次数?

还是说我理解错误了?请各位指教,谢谢。

<?php
set_time_limit(0);
ini_set('memory_limit', '128M');
 
$fileName = date('YmdHis', time());
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
 
$begin = microtime(true);
 
$fp = fopen('php://output', 'a');
 
$db = new mysqli('127.0.0.1', 'root', '', 'test');
 
if($db->connect_error) {
    die('connect error');
}
 
$step = 100;
$nums = 10000;
 
$title = array('ID', '用户名', '用户年龄', '用户描述', '用户手机', '用户QQ', '用户邮箱', '用户地址');
foreach($title as $key => $item) {
    $title[$key] = iconv('UTF-8', 'GBK', $item);
}

fputcsv($fp, $title);
 
for($s = 1; $s <= $step; ++$s) {
    $start = ($s - 1) * $nums;
    $result = $db->query("SELECT * FROM tb_users ORDER BY id LIMIT {$start},{$nums}");
    
    if($result) {
        while($row = $result->fetch_assoc()) {
            foreach($row as $key => $item) {
                $row[$key] = iconv('UTF-8', 'GBK', $item);
            }
            fputcsv($fp, $row);
        }
        $result->free();
        
        ob_flush();
        flush();
    }
}
 
$end = microtime(true);
echo '用时:', $end - $begin;

  • 写回答

4条回答 默认 最新

  • 「已注销」 2023-04-18 12:07
    关注

    引用new bing部分回答作答:
    在这段代码中,$step和$nums都是用于分批次查询数据的参数。

    其中,$step表示需要查询的总次数,$nums表示每次查询的记录数。在这段代码中,$step的值为100,$nums的值为10000,因此每次查询10000条记录,总共需要查询100次。

    如果总记录数为1563000,那么可以通过如下代码计算出需要查询的总次数:

    $total = 1563000;
    $nums = 10000;
    $step = ceil($total / $nums);
    

    这里使用了PHP的内置函数ceil(),它可以对浮点数进行上取整,这样就可以得到需要查询的总次数。

    这里的查询语句使用了LIMIT关键字,它可以控制查询的起始位置和返回的记录数。具体来说,LIMIT 0,10表示从第0条记录开始查询,查询10条记录。因此,我们可以通过修改起始位置和返回的记录数来实现分批次查询数据。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 创建了问题 4月18日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题