Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON转换时有一半的数据丢失?_Php_Mysql_Json - Fatal编程技术网

Php JSON转换时有一半的数据丢失?

Php JSON转换时有一半的数据丢失?,php,mysql,json,Php,Mysql,Json,我有一个国家的mysql数据库,总共有250个,我想把它交给一个Android应用程序。我知道我必须在两者之间使用php将结果解析为JSON。就是这样: <?php require_once('connection.php'); $response = array(); $resultarray = array(); $result = mysqli_query($con, "SELECT * FROM countries"); if (!empty($result)) {

我有一个国家的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_数组
都执行相同的操作-它们获取下一个记录

因此,在
while
中,首先使用
mysqli\u fetch\u assoc
获取记录,然后立即使用
mysqli\u fetch\u数组获取第二个记录。因此,第一条记录丢失。这在每次迭代中都会发生,所以一半的记录都会丢失

摆脱mysqli\u fetch\u数组
调用:

$response["Countries"] = array();
while ($row = mysqli_fetch_assoc($result)) {
    array_push($response["Countries"], $row["de"]);
}
echo json_encode($response);

这两个函数
mysqli\u fetch\u assoc
mysqli\u fetch\u array
都执行相同的操作-它们获取下一个记录

因此,在
while
中,首先使用
mysqli\u fetch\u assoc
获取记录,然后立即使用
mysqli\u fetch\u数组获取第二个记录。因此,第一条记录丢失。这在每次迭代中都会发生,所以一半的记录都会丢失

摆脱mysqli\u fetch\u数组
调用:

$response["Countries"] = array();
while ($row = mysqli_fetch_assoc($result)) {
    array_push($response["Countries"], $row["de"]);
}
echo json_encode($response);

为什么要调用
mysqli\u fetch\u assoc
mysqli\u fetch\u array
?我还是php新手,经过一些测试,我没有注意到有什么不同。整个脚本基本上是我从各种教程中拼凑而成的。这可能不是问题所在,不是吗?我在这里看不到与Android的任何关系。为什么你要调用
mysqli_fetch_assoc
mysqli_fetch_array
?我对php还是新手,经过一些测试,我没有注意到有什么不同。整个脚本基本上是我从各种教程中拼凑而成的。这可能不是问题所在,不是吗?我在这里看不到与Android有任何关系。