通过JSON数组/对象返回MYSQL查询结果?
问题描述:
我有一个包含国家名单表,我使用通过JSON数组/对象返回MYSQL查询结果?
$query = $conn->query("SELECT * FROM countries");
选择所有从表中的国家我现在需要把这个结果转换为JSON阵列/对象用在我的Android应用程序,但我只能让它从表格中返回最后一个国家。
我将如何将整个结果/国家列表转换为JSON以用于我的应用程序?
$response = array();
while($row = mysqli_fetch_assoc($query))
{
$response["country"] = $row;
}
echo json_encode ($response);
答
如果您或未来的读者仍然不知道为什么你在做没有工作,什么,当你使用以下代码在你while
循环:
$response["country"] = $row;
在在循环的第一次迭代中,使用一个键("country"
)创建$response
阵列,并将值$row
分配给该键。对于每次后续迭代,"country"
密钥是,其中将被新值$row
覆盖。这就是为什么最终只有最后一个国家。
当你将它更改为
$response["country"][] = $row;
一对夫妇的人建议,你将数组分配到"country"
键和$row
值追加到它,以后每次迭代中,新价值$row
是附加到该数组,所以在循环结束时,你将拥有所有的国家。
fetchAll()
方法是一种快捷方式,它不需要在循环中获取行。它的确有一些注意事项,你可以在the documentation中看到,但是如果你的结果集不是太大,你只需要json_encode
并直接输出,这是一个合理的选择。
答
你可以使用mysqli_fetch_all像
$response = array();
$response['country'] = mysqli_fetch_all($query, MYSQLI_ASSOC);
echo json_encode($response);
答
如果您可以使用$response["country"] = $row;
全部$row
数据每个循环新的初始化$response
变量。所以如果你返回$response
数组,你可以得到最后的数据。
那么,请跟随娄代码
$response = array();
while($row = mysqli_fetch_assoc($query))
{
$response["country"][] = $row;
}
echo json_encode ($response);
,如果你认为你不使用while循环,那么你也可以娄代码
$response = array();
$response['country'] = mysqli_fetch_all($query, MYSQLI_ASSOC);
echo json_encode($response);
'$回应[ “国”] = $行;'应该是'$ response [“country”] [] = $ row;' – Noman
好神。人们何时会_finally_开始阅读文档? http://php.net/manual/en/mysqli-result.fetch-all.php – arkascha