php - 如何用多行编码json?
问题描述
在开始之前,我查看了多个平台上的其他示例和问答,但似乎都没有解决我的问题。我正在尝试通过 json 从 MySQL 返回多行。然而,我一直做不到。下面的代码显示了我的尝试。
我通过 Postman 收到回复。第一个while
仅返回数据库中的最后一个条目,并do-while
返回所有条目但未正确编码 json,因为 json 输出syntax error
但 html 部分显示所有条目。
<?php
$dashboard_content_token = $_REQUEST["dashboard_content_token"];
$token = "g4";
require(cc_scripts/connect.php);
$sql = "SELECT * FROM `dashboard_content`";
$check = strcmp("$token", "$dashboard_content_token");
$statement = mysqli_query($con, $sql);
if (check) {
$rows = mysqli_fetch_assoc($statement);
if (!$rows) {
echo "No results!";
} else {
while ($rows = mysqli_fetch_assoc($statement)) {
$news_id = $rows['news_id'];
$image_url = $rows['image_url'];
$news_title = $rows['news_title'];
$news_description = $rows['news_description'];
$news_article = $rows['news_article'];
$result['dashboard content: '][] = array('news_id' => $news_id, 'image_url' => $image_url, 'news_title' => $news_title, 'news_description' => $news_description, 'news_article' => $news_article);
echo json_encode($result);
}
// do {
// $news_id = $rows['news_id'];
// $image_url = $rows['image_url'];
// $news_title = $rows['news_title'];
// $news_description = $rows['news_description'];
// $news_article = $rows['news_article'];
// $result['dashboard content: '][] = array('news_id' => $news_id, 'image_url' => $image_url, 'news_title' => $news_title, 'news_description' => $news_description, 'news_article' => $news_article);
// echo json_encode($result);
// } while ($rows = mysqli_fetch_assoc($statement));
mysqli_free_result($statement);
}
}
?>
解决方案
这应该有效。您需要使用该do...while
语句,否则会跳过第一个结果。
<?php
$dashboard_content_token = $_REQUEST["dashboard_content_token"];
$token = "g4";
require(cc_scripts/connect.php);
$sql = "SELECT * FROM `dashboard_content`";
$check = strcmp("$token", "$dashboard_content_token");
$statement = mysqli_query($con, $sql);
if (check) {
$rows = mysqli_fetch_assoc($statement);
if (!$rows) {
echo "No results!";
} else {
do {
$news_id = $rows['news_id'];
$image_url = $rows['image_url'];
$news_title = $rows['news_title'];
$news_description = $rows['news_description'];
$news_article = $rows['news_article'];
$result['dashboard content: '][] = array('news_id' => $news_id, 'image_url' => $image_url, 'news_title' => $news_title, 'news_description' => $news_description, 'news_article' => $news_article);
} while ($rows = mysqli_fetch_assoc($statement));
mysqli_free_result($statement);
echo json_encode($result);
}
}
?>
关键是将所有结果放入一个数组中,然后只做一个json_encode()
。当您json_encode()
多次调用时,您的 API 将返回无效的 json。
推荐阅读
- javascript - 使用自定义光标调整鼠标位置
- php - 不从被覆盖的方法中调用父类的方法是不是一个坏兆头?
- sql-server - 过去 30 天的数据有效,但前 30 天无效?
- python - Django 通用查询生成器
- javascript - 如何检查 react-native 应用程序的性能?
- jenkins - 部署后如何使用 Jenkins 重启 Azure Web App?
- c# - 忽略在 IEnumerable C# 中具有相同属性值的记录
- java - 如何捕获反应流取消信号?
- python - (Python 2.7)正则表达式替换为替换字符串中与模式中相似的字符
- python - 如何发送/接收多个数据?蟒蛇插座?