echo json_encode返回最后一个值是否正常?

时间:2018-03-10 16:01:30

标签: php arrays json database mysqli

<?php

require_once("Connection.php");

class DisplayJsonData{

    function getAllJsonData(){

        $connection = new Connection();
        $conn = $connection->getConnection();

        $jsonData = array();


        try{

            $sqlQuery = "SELECT * FROM DataTable";
            $getJson = mysqli_query($conn,$sqlQuery);


            while($row = mysqli_fetch_assoc($getJson)){

                $jsonData = $row;

            }


        }catch (Exception $e){
            echo "Error while displaying json : " . $e->getMessage();
        }
        if($sqlQuery){
            echo json_encode(array("DATA"=>$jsonData));
        }else{
            echo json_encode(array("DATA"=>null));
        }
    }
}

$json = new DisplayJsonData();
$json->getAllJsonData();

?>

这是我的代码工作,我想得到确认,

echo json_encode(array("DATA"=>$jsonData));

这一行返回一个值,数组列表中的最后一个值,但我在数据库中有8条记录,现在它返回所有值,但我看不到它们,因为我只写了数组的名称,但我没有循环在它,是发生了什么,或者它真的写了1条记录。

2 个答案:

答案 0 :(得分:1)

您的代码覆盖了$jsonData变量,因此您看到的只是添加到该变量的最后一行。将[]添加到数组名称,每次循环,您将为数组添加新的出现。

试试这个

$jsonData=array();
while($row =mysqli_fetch_assoc($getJson)){
    $jsonData[] = $row;
}

答案 1 :(得分:0)

不,json_encode返回最后一个值是不正常的。您对变量 $ jsonData 存在问题,它应该是一个数组,并且在每次循环迭代时, $ row 必须追加/推送到 $ jsonData 数组。使用此行$jsonData = $row;,您将覆盖每一行值,因此在将其编码为json时,只有最后一行可用。

while($row = mysqli_fetch_assoc($getJson)){
       $jsonData[] = $row;  //see the extra []
}

所以现在,如果你回复这样的数据,你应该完全得到8行。

 echo json_encode(array("DATA"=>$jsonData));