我有一个PHP脚本,它从表中获取所有记录并将其编码为JSON。该表共有 246条记录。 echo count();
也会返回246.
问题是,每当我使用json_encode
时,它根本不显示数组中的值,我看到的只是一个空白页面。但是如果我将记录数减少到13而不是246,它就可以工作并显示编码的JSON结果。我也尝试将我的php.ini文件中的memory_limit
增加到4095M,但没有用。
$result = mysqli_query($con, "SELECT * FROM cities");
if (mysqli_num_rows($result) > 0) {
$response["cities"] = array();
$city = array();
while($row = mysqli_fetch_assoc($result)) {
$city[] = $row;
array_push($response["cities"], $city);
}
$response["success"] = 1;
echo json_encode($response);
}
答案 0 :(得分:2)
尝试以下内容,您将了解到底发生了什么:
$json = json_encode($response);
if ($json)
echo $json;
else
echo json_last_error_msg();
json_last_error_msg() - 返回最后一个json_encode()或json_decode()调用的错误字符串
答案 1 :(得分:0)
数组“city”正在针对每个调用进行扩展,并且您将在循环中的每次迭代中推送完整数组。
尝试:
while($row = mysqli_fetch_assoc($result)) {
array_push($response["cities"], $row);
}
应该有效
答案 2 :(得分:0)
将$response
数组推送$row
移至$cities
数组中。在推送所有城市后,在json_encode();
功能中设置城市和响应,如此echo json_encode(array("cities"=>$cities, "success"=>1));
if (mysqli_num_rows($result) > 0) {
$cities = array();
while($row = mysqli_fetch_assoc($result)) {
array_push($cities, $row);
}
echo json_encode(array("cities"=>$cities, "success"=>1));
}