【发布时间】:2018-08-02 15:32:00
【问题描述】:
在开始之前,我查看了多个平台上的其他示例和问答,但似乎都没有解决我的问题。我正在尝试通过 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。否则将跳过第一个结果。数据库中只有两个结果吗? -
您可能会遇到语法错误,因为您多次回显
json_encode()。如果将所有数据库条目添加到$result数组并在do-while循环之后执行一个echo json_encode($result);会怎样? -
现在是的,我只有两个。以后我仍然会用更多的东西淹没我的数据库。
do-while没有正确编码 json。 -
@joeljoeljoel 您的建议效果很好,希望发布答案和解释,以防其他人。另外,我可以标记它,你会得到一些声誉。
-
@joeljoeljoel 它刚刚击中了我,但你怎么知道我的数据库中只有 2 个条目?