PHP查询数据库的结果怎么放到数组里

来源:草根站长作者:深圳GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《PHP查询数据库的结果怎么放到数组里》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PHP查询数据库的结果怎么放到数组里》有用,将其分享出去将是对创作者最好的鼓励。

在PHP开发过程中,从数据库查询到数据后,将结果集转换为数组是后续进行数据筛选、遍历、传递的基础操作,不同的数据库扩展提供了不同的实现方式,开发者可以根据自己使用的扩展选择合适的方法。

PHP查询数据库的结果怎么放到数组里

使用mysqli扩展转换结果集为数组

mysqli是PHP中常用的MySQL数据库扩展,它提供了多个函数可以将查询结果转换为数组,不同函数的返回形式略有区别。

mysqli_fetch_array函数

这个函数可以将结果集的一行转换为数组,默认同时返回索引数组和关联数组,也可以通过第二个参数指定返回类型。

<?php
// 连接数据库
$conn = mysqli_connect("127.0.0.1", "root", "password", "test_db");
if (!$conn) {
    die("数据库连接失败: " . mysqli_connect_error());
}
// 执行查询
$sql = "SELECT id, name, age FROM users";
$result = mysqli_query($conn, $sql);
// 存储所有结果的数组
$data = [];
// 循环获取每一行结果,默认返回关联数组和索引数组
while ($row = mysqli_fetch_array($result)) {
    $data[] = $row;
}
// 如果只需要关联数组,可以传入MYSQLI_ASSOC参数
// while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
//     $data[] = $row;
// }
// 如果只需要索引数组,可以传入MYSQLI_NUM参数
// while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
//     $data[] = $row;
// }
// 输出结果查看
print_r($data);
// 释放结果集
mysqli_free_result($result);
// 关闭连接
mysqli_close($conn);
?>

mysqli_fetch_assoc和mysqli_fetch_row函数

mysqli_fetch_assoc只返回关联数组,键名是字段名;mysqli_fetch_row只返回索引数组,键名是数字下标,使用方式和mysqli_fetch_array类似。

<?php
$conn = mysqli_connect("127.0.0.1", "root", "password", "test_db");
$sql = "SELECT id, name, age FROM users";
$result = mysqli_query($conn, $sql);
// 使用mysqli_fetch_assoc获取关联数组
$assocData = [];
while ($row = mysqli_fetch_assoc($result)) {
    $assocData[] = $row;
}
// 重置结果集指针,才能再次遍历
mysqli_data_seek($result, 0);
// 使用mysqli_fetch_row获取索引数组
$numData = [];
while ($row = mysqli_fetch_row($result)) {
    $numData[] = $row;
}
print_r($assocData);
print_r($numData);
mysqli_free_result($result);
mysqli_close($conn);
?>

使用PDO扩展转换结果集为数组

PDO是PHP的数据库抽象层,支持多种数据库,转换结果集为数组的方式更加简洁。

fetchAll方法

PDO的fetchAll方法可以直接获取结果集中的所有行,通过传入不同的参数可以指定返回数组的类型。

<?php
try {
    // 连接数据库,这里以MySQL为例
    $pdo = new PDO("mysql:host=127.0.0.1;dbname=test_db", "root", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 执行查询
    $sql = "SELECT id, name, age FROM users";
    $stmt = $pdo->query($sql);
    // 默认返回关联数组和索引数组,和mysqli_fetch_array默认行为一致
    $allData = $stmt->fetchAll();
    // 只返回关联数组
    $assocData = $stmt->fetchAll(PDO::FETCH_ASSOC);
    // 只返回索引数组
    $numData = $stmt->fetchAll(PDO::FETCH_NUM);
    // 返回对象数组
    $objData = $stmt->fetchAll(PDO::FETCH_OBJ);
    print_r($assocData);
} catch (PDOException $e) {
    echo "数据库操作失败: " . $e->getMessage();
}
?>

fetch方法逐行获取

如果需要逐行处理数据,可以使用fetch方法,每次获取一行结果,同样可以指定返回类型。

<?php
$pdo = new PDO("mysql:host=127.0.0.1;dbname=test_db", "root", "password");
$sql = "SELECT id, name, age FROM users";
$stmt = $pdo->query($sql);
$rowData = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $rowData[] = $row;
}
print_r($rowData);
?>

不同转换方式的区别

不同的转换函数返回数组的形式不同,开发者可以根据实际需求选择:

  • 如果需要同时获取字段名和数字下标对应的数据,选择返回两种数组的类型
  • 如果只需要通过字段名访问数据,选择关联数组类型,代码可读性更高
  • 如果只需要按顺序获取字段值,选择索引数组类型即可
函数/方法返回数组类型适用扩展
mysqli_fetch_array可指定关联、索引或两者都有mysqli
mysqli_fetch_assoc仅关联数组mysqli
mysqli_fetch_row仅索引数组mysqli
fetchAll可指定多种返回类型PDO
fetch可指定多种返回类型,逐行获取PDO

注意事项

在使用结果转数组操作时,需要注意以下几点:

  • 操作前需要确保查询执行成功,结果集有效,避免出现错误
  • 使用mysqli扩展遍历结果集后,如果需要再次遍历,要使用mysqli_data_seek重置结果集指针
  • 不需要结果集时要及时释放,避免占用资源
  • 数据库连接的账号密码等敏感信息不要硬编码在代码中,最好放在配置文件里
将PHP查询结果转换为数组是数据处理的基础操作,掌握不同扩展下的实现方式,可以让开发过程更加顺畅,根据实际场景选择合适的转换方法即可。

PHP数据库查询结果转数组mysqli_fetch_array修改时间:2026-07-21 19:12:31

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。