PHP操作Mysql记录数多引发的空白错误

1 错误由来

php操作三张表,一张表有近四十万条记录,另外两张表记录数在三万左右,三张表又关联。应用左连接left join。

    $qLStr = "select pu.pd_no, pu.common_name, pu.purchase_cost, pu.medication_area, pu.total_dosage, pu.control_object, pu.use_cost, "
              ."pu.farmer_id, pr.pesticide_type, pr.toxicity, pr.content_num, pr.class_type, "
              ."pf.farmer_type "
              ." from pesticide_usedetail as pu "
              ." left join pesticide_register as pr on pu.pd_no=pr.regist_no "
              ." left join pesticide_farmers as pf on pu.farmer_id=pf.id "
              ." where pu.dateyear=2022 and pu.crop_id=3"
              ." order by pu.farmer_id";  
但运行数秒后,页面即显示为空白。不显示记录,也不显示记录数量。

加error_reporting(-1);

也无错误显示。

2 原因查找

通过myadmin可以正确运行查询,记录数约在9万左右,换另一种crop_id,记录数3万多可由php操作查询语句正确运行。

修改sql语句字段数,减少到8个字段可开始查询,以为是left join语句的效率问题,字段pd_no等连接字段加上索引,但问题依旧。

原php语句是在mysql封装类中操作,直接跳过类,连接数据库后,查询记录数可显示。但在进行

 while($row = $rowLArr->fetch_assoc()){
       $rows[] = $row;
 }

操作时,提示

Fatal error: Allowed memory size of  ***bytes exhausted错误

3 解决方法

查看php.ini文件

memory_limit = 128M

起先原以为这个够了,实际在数据量较大时就出问题。

修改为memory_limit = 256M

ok

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值