【发布时间】:2018-03-10 16:01:30
【问题描述】:
<?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 条记录。
【问题讨论】:
-
您只是在使用 while 循环更新 $jsonData 的值。因此,最后一个 $row 将是 $jsonData 的值。您应该将 $row 推送到 $jsonData。
-
另外,你可以试试: $jsonData = mysqli_fetch_all($getJson, MYSQLI_ASSOC);没有 WHILE 循环。参考:php.net/manual/en/mysqli-result.fetch-all.php
-
您的测试
if($sqlQuery){将始终通过,因为这是查询字符串,而不是如果查询正确执行。 -
另外作为风格问题 - 我通常会
return来自函数的数据并从调用点输出。echo自己的数据的函数有时会导致不必要的副作用。 -
@Nigel Ren 我实际上是在尝试将它从主机发送到我的 android 设备,所以现在看起来漂亮不是我关心的问题,更不用说让它可读了我可以使用 echo
json_encode(array("DATA"=>$jsonData),JSON_PRETTY_PRINT);我可以添加JSON_PRETTY_PRINT使其可读。
标签: php arrays json database mysqli