Php 什么是PDO可滚动光标?

Php 什么是PDO可滚动光标?,php,mysql,pdo,Php,Mysql,Pdo,“使用可滚动光标获取行”是什么意思?它为查询创建了一个新的路径,允许您在结果集上进行迭代,而无需一次性获取整个结果。具体来说,是一种允许向后迭代的方法 示例用法:您可以向前滚动,直到找到所需的记录,如果您也需要以前的记录,可以往回迭代以获取它们。给出了以下内容: 还有一个不可滚动的光标 只称为“前进”,可以获取 每行最多一次,光标 自动移动到当前位置 下一行。之后的提取操作 已检索到最后一行 将光标放置在最后一个 行并返回SQLSTATE 02000 (SQLCODE+100) 这是: 一个程序

“使用可滚动光标获取行”是什么意思?

它为查询创建了一个新的路径,允许您在结果集上进行迭代,而无需一次性获取整个结果。具体来说,是一种允许向后迭代的方法

示例用法:您可以向前滚动,直到找到所需的记录,如果您也需要以前的记录,可以往回迭代以获取它们。

给出了以下内容:

还有一个不可滚动的光标 只称为“前进”,可以获取 每行最多一次,光标 自动移动到当前位置 下一行。之后的提取操作 已检索到最后一行 将光标放置在最后一个 行并返回SQLSTATE 02000 (SQLCODE+100)

这是:

一个程序可以定位一个可滚动的 光标位于结果集中的任意位置 使用FETCH SQL语句

您应该阅读前面链接的文章,但这看起来也是一些有趣的信息:

可滚动游标可能会 访问结果集中的同一行 多次。因此,数据 修改(插入、更新、删除 来自其他交易的业务 可能会对结果产生影响 设定

在PHP中,可以通过使用准备好的语句将可滚动游标与PDO一起使用(请参阅):

请求一个可滚动的光标 您的PDO语句对象,必须设置 将PDO::ATTR_CURSOR属性设置为 PDO::准备时光标滚动 包含PDO::prepare()的SQL语句

(下一页还有一个示例)


有趣的是,它能够“滚动”结果集,而不必获取内存中的所有数据来对其进行迭代。

对于Mysql。。。不受支持=不可用(mysql(i)和PDO都不可用):


mysqli_result::data_seek(),请注意,手册中指出:“此函数只能用于通过使用mysqli_store_result()或mysqli_query()函数获得的缓冲结果。”也就是说,查找发生在结果集的本地缓存副本上,而不是服务器上。因此,它不支持任何关于“可滚动光标”的建议。

如果您计划使用它们,您还应该参考(实际的)dbms文档,了解您将使用哪种类型的光标。对于他们中的一些人来说,可滚动版本远比只向前移动的光标“昂贵”,甚至不可用。