You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用echo json_encode仅返回数组最后一个值是否正常?

问题分析与解决思路

嘿,这个问题我碰到过好几次,大概率是你没正确把所有查询结果收集到数组里,而不是数据库真的只返回了1条记录。下面给你一步步拆解原因和验证方法:

最常见的错误写法

很多人会在循环里直接覆盖变量,而不是把每条记录追加到数组里:

// 错误示例:每次循环都覆盖$data,最后只剩最后一条
$result = mysqli_query($conn, "SELECT * FROM your_table");
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
    $data = $row; // 这里是赋值,不是追加!
}
echo json_encode($data);

正确的做法是用[]把每行数据追加到数组末尾:

// 正确示例:收集所有记录到数组
$result = mysqli_query($conn, "SELECT * FROM your_table");
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row; // 追加当前行到数组
}
echo json_encode($data);

验证数据库是否真的返回8条记录

你可以先打印查询结果的总数和每条数据,确认问题出在哪:

$result = mysqli_query($conn, "SELECT * FROM your_table");
// 先看查询到的总记录数
echo "数据库返回的记录数:" . mysqli_num_rows($result) . "<br>";

// 遍历打印每条记录
while ($row = mysqli_fetch_assoc($result)) {
    print_r($row);
    echo "<br>";
}

如果mysqli_num_rows($result)输出8,说明数据库确实查到了8条,那就是你收集数据的方式错了;如果输出1,那就要检查你的SQL语句是不是加了LIMIT 1,或者where条件过滤掉了其他7条记录。

额外小提示

  • 如果你用的是PDO,逻辑也是一样的:别直接赋值,要用$data[] = $row来追加记录
  • 如果json_encode输出异常,可以用json_last_error()查看编码是否失败(比如特殊字符、中文编码问题都可能导致这种情况)

内容的提问来源于stack exchange,提问作者Someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:49:49