php数据库游标使用教程_php数据库逐行处理数据方法

34次阅读

使用 pdomysql i 的游标功能可实现 数据库 大数据 量下的低内存逐行处理。首先通过 PDO 设置 PDO::MYSQL_ATTR_USE_BUFFEred_QUERY 为 false,结合 fetch()方法逐行读取;或使用 mysqli 的 query()配合 MYSQLI_USE_RESULT 模式执行未缓冲查询,再用 fetch_assoc()循环 获取数据,并需调用 free_result()释放资源;进一步结合 php 生成器,封装 游标查询为 Generator对象 ,利用 yield 逐次返回单行数据,使 内存占用 保持在较低水平,适用于大规模数据流式处理场景。

php 数据库游标使用教程_php 数据库逐行处理数据方法

当您需要从数据库中读取大量数据并逐行处理时,直接加载全部结果集可能导致内存溢出。使用游标可以有效降低内存消耗,实现高效的数据流式处理。以下是 PHP 中利用游标逐行处理数据库数据的方法。

本文运行环境:macBook Pro,macOS Sonoma

一、使用 PDO 游标模式

PDO 提供了对游标的原生支持,通过设置语句的获取模式为游标类型,可实现逐行读取数据。

1、创建 PDO 连接,并禁用预取以启用服务器 端游 标。

立即学习PHP 免费学习笔记(深入)”;

将 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性设为 false,确保查询不缓存全部结果。

2、执行 select 语句后,使用 while 循环配合 fetch()方法逐行获取记录。

3、每处理完一行数据后,自动释放当前行资源,避免内存累积。

二、使用 MySQLi 未缓冲查询

MySQLi 扩展允许执行未缓冲查询,使得结果集在客户端不被完整存储,适合 大数据 量场景。

php 数据库游标使用教程_php 数据库逐行处理数据方法

怪兽 AI 数字人

数字人短视频创作,数字人直播,实时驱动数字人

php 数据库游标使用教程_php 数据库逐行处理数据方法44

查看详情 php 数据库游标使用教程_php 数据库逐行处理数据方法

1、建立 MySQLi 连接后,调用 query()方法并传入第二个参数 MYSQLI_USE_RESULT 以启动未缓冲模式。

2、使用 fetch_assoc()或 fetch_array()方法循环读取每一行数据。

3、必须在处理完毕后调用 free_result()显式释放结果集资源。

三、结合生成器实现内存友好型迭代

PHP 的生成器能将游标封装成可遍历对象,在保持低 内存占用 的同时提供简洁的语法结构。

1、定义一个返回 Generator 类型的方法,内部使用 PDO 或 MySQLi 进行未缓冲查询。

2、在循环中每次 yield 返回单行数据,外部可通过 foreach 消费该生成器。

3、生成器函数会在每次 yield 后暂停执行,直到下一次迭代请求,极大减少内存压力。

站长
版权声明:本站原创文章,由 站长 2025-10-30发表,共计1025字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources