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

