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

将SQL查询结果转换为可JSON编码的PHP数组问题求助

解决方法:生成二维数组输出JSON

嘿,我一眼就看出问题所在啦!你当前的代码在循环里每次都会直接覆盖$employees数组里的name、title、salary键值,最后只会保留数据库里的最后一条数据,自然得不到你想要的二维数组结构。

修正后的代码

首先要明确:mysqli_fetch_assoc需要传入的是查询结果集(也就是mysqli_query执行后的返回值),而不是SQL语句字符串。然后我们要在每次循环中把当前行的关联数组追加到$employees大数组里:

// 假设你已经有了数据库连接对象$db_conn
$sql = "SELECT name,title,salary FROM persons";
$result = mysqli_query($db_conn, $sql); // 执行查询,获取结果集

$employees = array();
while($row = mysqli_fetch_assoc($result)) {
    // 把当前行的关联数组直接追加到$employees中
    $employees[] = $row;
}

// 输出JSON
echo json_encode($employees);

为什么这样可行?

  • mysqli_fetch_assoc($result)每次循环会返回当前行的关联数组(键是字段名,值是对应的数据),当没有更多行时返回null,循环结束。
  • 使用$employees[] = $row会自动在$employees数组末尾添加一个新的元素(也就是当前行的数组),最终形成一个包含多个子数组的二维数组,完全符合你想要的array( array("name" => "Jack", ...), ...)结构。

如果你需要手动指定字段(比如筛选部分字段)

如果后续需要只保留特定字段,也可以手动构建子数组:

while($row = mysqli_fetch_assoc($result)) {
    $employees[] = array(
        'name' => $row['name'],
        'title' => $row['title'],
        'salary' => $row['salary']
    );
}

这样输出的JSON结构就是你期望的格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:20:30