我有一个国家/地区的 mysql 数据库,总共 250 个,我想将其交给 Android 应用程序。我知道我必须在中间使用 php 将结果解析为 JSON。就是这样:
<?php
require_once('connection.php');
$response = array();
$resultarray = array();
$result = mysqli_query($con, "SELECT * FROM countries");
if (!empty($result)) {
// check for empty result
while ($row=mysqli_fetch_assoc($result)) {
print $row;
$resultarray = mysqli_fetch_array($result);
$Laender = array();
$Countries[de] = $resultarray["de"];
$response["Countries"] = array();
array_push($response["Countries"], $Countries);
echo json_encode($response);
}
}
?>
我在浏览器中运行了该脚本,它显示正确,只是缺少一半的国家/地区。仅显示 125 个国家/地区。他们消失到哪里去了?
最佳答案
两个函数mysqli_fetch_assoc
和 mysqli_fetch_array
做同样的事情 - 他们获取下一条记录。
所以,在你的 while
中您使用 mysqli_fetch_assoc
获取第一条记录然后立即使用 mysqli_fetch_array
获取第二记录。因此,第一个记录丢失了。这种情况每次迭代都会发生,因此一半的记录都会丢失。
摆脱mysqli_fetch_array
调用:
$response["Countries"] = array();
while ($row = mysqli_fetch_assoc($result)) {
array_push($response["Countries"], $row["de"]);
}
echo json_encode($response);
关于php - JSON 转换丢失一半数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46484533/