使用PHP从MYSQL获取数据到JSON

前端之家收集整理的这篇文章主要介绍了使用PHP从MYSQL获取数据到JSON前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下非常简单的测试 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解决方案,它将使用更少的内存.

猜你在找的PHP相关文章