<?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条记录。
答案 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));