使用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格式的文本中.
我收到以下错误..
其中第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解决方案,它将使用更少的内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |