加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP从MYSQL获取数据到JSON

发布时间:2020-12-13 13:11:52 所属栏目:PHP教程 来源:网络整理
导读:我有以下非常简单的测试 PHP代码,它提取数据并将其放入JSON格式的文本中. 我收到以下错误.. Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1979603 bytes) in /var/www/test.php on line 33 其中第33行是json_encode()
我有以下非常简单的测试 PHP代码,它提取数据并将其放入JSON格式的文本中.

我收到以下错误..

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1979603 bytes) in /var/www/test.php on line 33

其中第33行是json_encode()行.

有没有办法让这个更有效率? PHP.ini已经设置为最大32M,因此从8M标准大小!

<?php
    require('../../admin/db_login.php');

    $db=mysql_connect($host,$username,$password) or die('Could not connect');
    mysql_select_db($db_name,$db) or die('');

    $result = mysql_query("SELECT * from listinfo") or die('Could not query');
    $json = array();

    if(mysql_num_rows($result)){
            $row=mysql_fetch_assoc($result);
        while($row=mysql_fetch_row($result)){
            //  cast results to specific data types

            $test_data[]=$row;
        }
        $json['testData']=$test_data;
    }

    mysql_close($db);

    echo json_encode($json);


    ?>
您可能正在编码一个非常大的数据集.您可以一次编码每一行,而不是在一个大操作中对其进行编码.
<?php
require('../../admin/db_login.php');

$db=mysql_connect($host,$password) or die('Could not connect');
mysql_select_db($db_name,$db) or die('');

$result = mysql_query("SELECT * from listinfo") or die('Could not query');

if(mysql_num_rows($result)){
    echo '{"testData":[';

    $first = true;
    $row=mysql_fetch_assoc($result);
    while($row=mysql_fetch_row($result)){
        //  cast results to specific data types

        if($first) {
            $first = false;
        } else {
            echo ',';
        }
        echo json_encode($row);
    }
    echo ']}';
} else {
    echo '[]';
}

mysql_close($db);

这样,每次调用json_encode()只会编码一个小数组而不是一个大数组.最终结果是一样的.这是IMO解决方案,它将使用更少的内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读