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
相关产品推荐
相关产品推荐

