【问题标题】:Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes)允许的内存大小 134217728 字节用尽(尝试分配 36 字节)
【发布时间】:2016-04-18 06:13:58
【问题描述】:

谁能帮我解决这个错误!
“已用尽 134217728 字节的允许内存大小(尝试分配 36 字节)”

当我从所有可用课程的数据库表中获取记录时会发生此错误(总课程数为 84)。
我的功能是:-

function allCouses()
{
    include 'connect.php';
    $qry = "SELECT * FROM master_course WHERE mc_enabled=1 AND mc_deleted=0";
    $data = mysqli_query($con, $qry);
    if(mysqli_num_rows($data))
    {
        $record = mysqli_fetch_assoc($data);
        while($record)
            $course[]=$record;
        return $course;
    }
}

当我将所有记录存储在$course[] 时发生错误。

【问题讨论】:

  • What should I do when someone answers my question 你不善于接受对你问题的回答。 不接受! SO 是 2 路街道,如果您需要帮助并获得帮助,请接受对您有帮助的答案。除其他外,它允许其他人看到您有您需要的答案,因此他们不会继续为您的问题添加答案。您还可以通过接受答案获得声誉积分

标签: php


【解决方案1】:

你在循环,错了,并且写了一个无限的while循环,你需要在while循环中的mysqli_fetch_assoc来读取所有的结果集中的行。

function allCouses()
{
    include 'connect.php';
    $qry = "SELECT * FROM master_course WHERE mc_enabled=1 AND mc_deleted=0";
    $data = mysqli_query($con, $qry);

    while ($record = mysqli_fetch_assoc($data) ) {
        $course[]=$record;
    }
    return $course;
}

最好在脚本主体中建立数据库连接,然后将$con 作为参数传递给需要它的每个函数。相比之下,建立连接的过程相当缓慢,因此您只想在每个脚本中执行一次。

<?php
function allCouses($con)
{
    $qry = "SELECT * FROM master_course WHERE mc_enabled=1 AND mc_deleted=0";
    $data = mysqli_query($con, $qry);

    while ($record = mysqli_fetch_assoc($data) ) {
        $course[]=$record;
    }
    return $course;
}



include 'connect.php';

$courses = allCourses($con);

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 2021-12-29
    • 2017-07-23
    • 2018-02-23
    • 2014-11-20
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多