当前位置: 首页> 最新文章列表> mysqli_result::fetch_array() 的使用与参数详解

mysqli_result::fetch_array() 的使用与参数详解

M66 2025-05-17

在 PHP 中,如果你用 (MySQL Improved Extension)扩展连接数据库并执行查询,当你执行像 mysqli_query() 这样的查询函数时,如果查询返回了结果集(例如 SELECT 查询),你会得到一个 mysqli_result 对象。

这个 mysqli_result 对象是一个用于操作查询结果的接口,你可以通过它来逐行、逐字段地读取查询返回的数据。

mysqli_result 是什么?

mysqli_result面向对象过程化 两种风格下都存在的一个结果集对象。它包含了数据库查询返回的所有行和列数据,但它并不会一次性把这些数据都加载到内存里,而是需要通过各种方法去按需取出。

常见的获取数据的方法有:

  • fetch_assoc() → 获取一行关联数组

  • fetch_row() → 获取一行索引数组

  • fetch_object() → 获取一行对象

  • fetch_array() → 获取一行,既可以是关联数组,也可以是索引数组,或者两者都有(可配置)

本文重点说说 fetch_array()

fetch_array() 方法怎么用?

fetch_array()mysqli_result 的一个方法,用于获取当前结果集中的一行数据,返回形式是数组。

调用方式有两种风格:

面向对象风格:

$result = $mysqli->query("SELECT id, name FROM users");
$row = $result->fetch_array();

过程化风格:

$result = mysqli_query($conn, "SELECT id, name FROM users");
$row = mysqli_fetch_array($result);

无论哪种方式,它每调用一次就取出一行,直到没有更多行(此时返回 false)。

参数都是什么意思?

fetch_array() 可以接收一个可选参数,用来控制返回数组的类型。
完整签名:

array mysqli_fetch_array(mysqli_result $result, int $resulttype = MYSQLI_BOTH)

参数 $resulttype 取值有:

  • MYSQLI_ASSOC → 只返回关联数组(字段名作 key)

  • MYSQLI_NUM → 只返回数字索引数组(字段索引作 key)

  • MYSQLI_BOTH(默认)→ 返回关联 + 数字索引混合数组

举个例子:

$conn = mysqli_connect("localhost", "username", "password", "database");
$result = mysqli_query($conn, "SELECT id, name FROM users");

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "ID: " . $row['id'] . " Name: " . $row['name'] . "<br>";
}

这里我们用 MYSQLI_ASSOC,所以 $row 里就只有字段名作 key,没有数字索引。

实例代码

完整例子: