当前位置: 首页 > news >正文

php中mysqli_fentch四种常用查询函数的比较表及实例演示详解

以下是PHP中mysqli_fetch系列四种常用查询函数(mysqli_fetch_arraymysqli_fetch_assocmysqli_fetch_rowmysqli_fetch_object)的比较表,涵盖返回类型、索引方式、参数、性能特点及适用场景等关键方面,帮助开发者快速选择合适函数。

函数名返回类型索引方式参数使用示例主要特点与适用场景
‌mysqli_fetch_array‌数组可选:关联数组、数字索引数组或两者兼有(默认)result_type:MYSQLI_BOTH(默认)、MYSQLI_ASSOCMYSQLI_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_arraymysqli_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)。

1

2

3

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

$row=$result->fetch_array();// 默认 MYSQLI_BOTH

echo"<pre>"; print_r($row);echo"</pre>";

‌输出‌:

1

2

3

4

5

6

7

Array

(

[0] => 1// 数字索引

[id] => 1// 关联索引

[1] =>"Alice"// 数字索引

[name] =>"Alice"// 关联索引

)

2.mysqli_fetch_assoc

‌特点‌:仅返回关联索引数组(字段名作为键)。

1

2

$row=$result->fetch_assoc();

echo"<pre>"; print_r($row);echo"</pre>";

‌输出‌:

1

2

3

4

5

Array

(

[id] => 1

[name] =>"Alice"

)

3.mysqli_fetch_row

‌特点‌:仅返回数字索引数组(按查询字段顺序)。

1

2

$row=$result->fetch_row();

echo"<pre>"; print_r($row);echo"</pre>";

‌输出‌:

1

2

3

4

5

Array

(

[0] => 1

[1] =>"Alice"

)

4.mysqli_fetch_object

‌特点‌:返回对象,通过属性访问字段。

1

2

$row=$result->fetch_object();

echo"<pre>"; print_r($row);echo"</pre>";

‌输出‌:

1

2

3

4

5

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。
http://www.jsqmd.com/news/766061/

相关文章:

  • NVDLA卷积流水线实战解析:从CDMA到CACC,手把手拆解硬件加速器的数据流
  • 技术解析:abqpy如何重塑Abaqus Python脚本开发的类型生态
  • 传统觉得人脉越多赚钱速度越快,编程统计人脉数量,实际合作收益数据,精简优质人脉远胜杂乱泛泛社交。
  • 魔兽地图格式转换的技术架构解析:w3x2lni系统设计深度剖析
  • [20260505]关于内核参数kernel.shmmax.txt
  • 实战指南:基于快马平台构建集成Hermes引擎的企业级React Native应用
  • 西门子PLC通信开发不再难:S7.NET+库带你轻松搞定工业自动化
  • Embedding 向量化实战:从单批次到批量处理的深度解析
  • 【7】RocketMQ架构全景
  • 座舱式个人飞行器 - 每日详细制作步骤(第1-2周)
  • 告别双系统!Win11下用WSL2+Anaconda打造无缝AI开发环境(保姆级避坑)
  • AICoverGen:零基础制作专业AI翻唱歌曲的完整指南
  • 如何用OpenDrop开源数字微流控平台掌控微观世界:3步搭建你的生物实验室
  • Unity AI副驾驶Coplay:用自然语言与流水线重塑游戏开发工作流
  • 深度学习优化核心:梯度下降与网络训练全解析
  • 看完这篇,彻底搞懂大模型:30个核心机制全解析
  • Confection v0.1.0 配置解析增强
  • 地物杂波损耗详细公式与分析
  • VLC媒体播放器:从入门到精通的完全指南 [特殊字符]
  • 多因子检测技术解锁动脉粥样硬化的分子密码:从生物标志物到系统评估
  • 2026 代际领先・纯视觉定义室外无感新范式
  • 阴阳师OAS脚本:如何用3分钟实现游戏自动化?
  • STC8H1K08单片机SPI实战:手把手教你驱动nRF24L01无线模块(附完整代码与避坑指南)
  • 座舱式个人飞行器 - 每日详细制作步骤(第3-4周)
  • ElementUI DatePicker 日期选择器:从基础配置到自定义快捷选项的完整指南
  • 对比体验Taotoken平台不同大模型在代码生成任务上的响应差异
  • 告别手动配置!基于STM32 UID的RS485从机地址自动分配实战(附完整代码)
  • 别再只盯着走线了!聊聊PCB制造里那些‘特殊’工艺,比如金手指Tie bar less和板边电镀到底有啥用?
  • YOLOv9模型瘦身新思路:用CARAFE替换上采样层,参数量几乎不变,小目标检测效果却提升了
  • 终极指南:如何用Minecraft Region Fixer修复损坏的游戏存档