php中mysqli_fentch四种常用查询函数的比较表及实例演示详解
作者:长城2024
一、比较表
以下是PHP中mysqli_fetch系列四种常用查询函数(mysqli_fetch_array、mysqli_fetch_assoc、mysqli_fetch_row、mysqli_fetch_object)的比较表,涵盖返回类型、索引方式、参数、性能特点及适用场景等关键方面,帮助开发者快速选择合适函数。
| 函数名 | 返回类型 | 索引方式 | 参数 | 使用示例 | 主要特点与适用场景 |
|---|---|---|---|---|---|
| mysqli_fetch_array | 数组 | 可选:关联数组、数字索引数组或两者兼有(默认) | result_type: MYSQLI_BOTH(默认)、MYSQLI_ASSOC、MYSQLI_NUM | $row = $result->fetch_array(); echo $row['name'] . $row[0]; | 灵活性高,但可能冗余;可通过参数控制返回格式,适合需同时访问字段名和数字索引的场景。 |
| mysqli_fetch_assoc | 数组 | 仅关联数组(字段名作为键) | 无 | $row = $result->fetch_assoc(); echo $row['name']; | 返回纯关联数组,代码可读性好;性能优于mysqli_fetch_array(无多余索引),适合需明确字段名的查询。 |
| mysqli_fetch_row | 数组 | 仅数字索引数组(按查询字段顺序) | 无 | $row = $result->fetch_row(); echo $row[0]; | 高效轻量(仅数字索引);适用于字段顺序固定或不关心字段名的场景,如快速导出数据。 |
| mysqli_fetch_object | 对象 | 属性访问(字段名作为属性) | 无 | $row = $result->fetch_object(); echo $row->name; | 面向对象风格;需通过->访问属性,适合集成到类或需链式操作的场景,但创建对象稍慢。 |
补充说明
性能对比:
mysqli_fetch_row通常最快(仅数字索引),mysqli_fetch_object稍慢(需实例化对象),而mysqli_fetch_array和mysqli_fetch_assoc居中。优先选择最简索引方式以优化性能。结果集处理:所有函数逐行移动结果集指针,末尾返回
false(数组函数)或null(对象函数)。错误处理:查询失败时
mysqli_query返回false,需先验证结果集再调用fetch函数。推荐实践:
明确字段名时用
mysqli_fetch_assoc(简洁高效)。需混合索引时用
mysqli_fetch_array(参数控制)。面向对象代码用
mysqli_fetch_object。高性能批量处理用
mysqli_fetch_row。
此表综合了函数的核心差异,实际选择应结合查询需求和数据访问模式。
二、示例
以下是PHP中mysqli_fetch四种查询函数的实例输出对比,通过print_r展示不同返回格式(用<pre>标签清晰呈现出不同,方便大家对比):
1.mysqli_fetch_array
特点:默认返回同时包含数字索引和关联索引的数组(MYSQLI_BOTH)。
$result = $conn->query("SELECT id, name FROM users");
$row = $result->fetch_array(); // 默认 MYSQLI_BOTH
echo "<pre>"; print_r($row); echo "</pre>";输出:
Array
(
[0] => 1 // 数字索引
[id] => 1 // 关联索引
[1] => "Alice" // 数字索引
[name] => "Alice" // 关联索引
)2.mysqli_fetch_assoc
特点:仅返回关联索引数组(字段名作为键)。
$row = $result->fetch_assoc(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
Array
(
[id] => 1
[name] => "Alice"
)3.mysqli_fetch_row
特点:仅返回数字索引数组(按查询字段顺序)。
$row = $result->fetch_row(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
Array
(
[0] => 1
[1] => "Alice"
)4.mysqli_fetch_object
特点:返回对象,通过属性访问字段。
$row = $result->fetch_object(); echo "<pre>"; print_r($row); echo "</pre>";
输出:
stdClass Object
(
[id] => 1
[name] => "Alice"
)关键区别总结:
索引方式:
- fetch_array:双索引(数字+关联)。
- fetch_assoc:仅关联索引。
- fetch_row:仅数字索引。
- fetch_object:对象属性。
性能:
fetch_row最快(无额外索引),fetch_object稍慢(需实例化)。
适用场景:
- 明确字段名时用fetch_assoc;
- 需混合索引用fetch_array;
- 面向对象代码用fetch_object;
- 高性能处理用fetch_row。
总结
到此这篇关于php中mysqli_fentch四种常用查询函数的比较表及实例演示的文章就介绍到这了,更多相关php mysqli_fentch常用查询函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
