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

MySQLi结果转数组问题:如何将所有行存入单个数组返回

我懂你现在的困扰——查出来的数据只能拿到第一条,没法把所有结果都存进数组里返回是吧?别担心,用循环就能轻松搞定,我给你两种常见场景的实现方法,你可以照着改:

方法一:MySQLi 面向过程写法

如果你的代码用的是MySQLi扩展,只需要初始化一个空数组,再用while循环逐行读取结果并追加进去就行:

// 假设你已经完成数据库连接,$result 是查询得到的结果集
$allRecords = []; // 创建空数组用来存所有数据

// 循环读取每一行,直到结果集为空
while ($row = mysqli_fetch_assoc($result)) {
    $allRecords[] = $row; // 把当前行数据追加到数组末尾
}

// 输出包含所有数据的JSON
echo json_encode($allRecords);
方法二:PDO 扩展写法

如果用的是PDO,除了循环,还能直接用fetchAll()一次性获取所有行,更简洁:

// 假设$stmt是你准备好的PDO查询语句对象
$stmt->execute(); // 执行查询

// 方式1:用循环逐行添加
$allRecords = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $allRecords[] = $row;
}

// 方式2:一步到位直接获取所有数据(更推荐)
// $allRecords = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 输出JSON格式的全部数据
echo json_encode($allRecords);

关键逻辑说明

不管用哪种方式,核心思路都是:

  • 先创建一个空数组作为容器
  • 通过循环(或者PDO的fetchAll)把每一条数据都添加到这个数组里
  • 最后用json_encode输出整个数组,就能看到所有结果了

如果你的数据源不是数据库(比如读取文件、API返回的分页数据),逻辑也是一样的:初始化空数组,循环读取每一条数据并追加,最后统一处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:34:51