mysqli_fetch_array()函数详解

在使用PHP进行数据库操作时,我们常常需要查询数据库并获取查询结果,MySQLi提供了一系列函数来执行这样的任务,其中包括mysqli_fetch_array()函数。本文将详解mysqli_fetch_array()函数的用法、参数含义以及常见问题的解决方案。
1. mysqli_fetch_array()函数概述
mysqli_fetch_array()函数用于从结果集中取得一行作为关联数组、数字数组或二者兼有,并将指针移动到下一行。该函数的格式为:
mysqli_fetch_array(结果集,结果类型);
其中:
$结果集为mysqli_query()函数执行后的结果(即数据库查询的返回结果);$结果类型为可选参数,用于指定返回的结果类型,可以是MYSQLI_ASSOC、MYSQLI_NUM、MYSQLI_BOTH。默认为MYSQLI_BOTH。
2. 返回结果类型
下面我们将依次介绍三种返回结果类型的含义及其使用场景。
2.1 MYSQLI_ASSOC类型
MYSQLI_ASSOC类型表示返回一个关联数组,其中键为字段名,值为字段值。例如,假设我们有一个名为users的表,其结构如下:
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | John | 123456 |
| 2 | Alice | abcdef |
+----+----------+----------+
使用以下代码查询users表并以MYSQLI_ASSOC类型返回结果:
$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo $row['username'] . ' ' . $row['password'] . '<br>';
}
结果将输出:
John 123456
Alice abcdef
2.2 MYSQLI_NUM类型
MYSQLI_NUM类型表示返回一个数字数组,其中键为字段在查询结果中的索引,值为字段值。使用以下代码查询users表并以MYSQLI_NUM类型返回结果:
$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
echo $row[0] . ' ' . $row[1] . ' ' . $row[2] . '<br>';
}
结果将输出:
1 John 123456
2 Alice abcdef
2.3 MYSQLI_BOTH类型
MYSQLI_BOTH类型表示返回一个同时包含关联数组和数字数组的数组,即同时使用字段名和索引访问字段值。使用以下代码查询users表并以MYSQLI_BOTH类型返回结果:
$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
echo $row[0] . ' ' . $row[1] . ' ' . $row[2] . ' ';
echo $row['id'] . ' ' . $row['username'] . ' ' . $row['password'] . '<br>';
}
结果将输出:
1 John 123456 1 John 123456
2 Alice abcdef 2 Alice abcdef
3. 常见问题及解决方案
3.1 没有获取到结果集
在实际使用过程中,有时会遇到mysqli_fetch_array()函数返回NULL或空数组的情况。此时需要进行以下检查与排查:
- 检查数据库连接是否成功建立,可以使用
mysqli_connect_error()函数打印连接错误信息; - 检查SQL语句是否正确,可以使用
mysqli_error()函数打印数据库错误信息; - 检查查询结果集是否为空,可以使用
mysqli_num_rows()函数获取结果集的行数,若为0则表示结果集为空。
3.2 mysqli_fetch_array()报错:expects parameter 1 to be mysqli_result, boolean given
当mysqli_query()执行查询操作时,如果查询失败,它将返回FALSE,而不是预期的结果集。因此,在使用mysqli_fetch_array()函数处理查询结果前,需要先检查mysqli_query()的返回值来确保查询操作成功执行。以下是一个示例代码:
$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
if ($result) {
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
// 处理查询结果
}
} else {
echo "查询失败:" . mysqli_error($conn);
}
总结
本文详细介绍了mysqli_fetch_array()函数在PHP中的用法,包括返回结果类型的含义和使用场景,以及解决常见问题所需注意的方法。使用mysqli_fetch_array()函数可以轻松地从数据库查询结果中获取所需数据,并方便地进行后续处理。
极客笔记