什么是PDO可滚动游标?

时间:2009-07-20 18:45:22

标签: php mysql pdo

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

3 个答案:

答案 0 :(得分:15)

它为查询创建cursor,允许您迭代结果集而不立即获取整个结果。具体而言,scrollable cursor是允许向后迭代的。{/ p>

使用示例:您可以向前滚动,直到找到所需的记录,然后迭代返回以获取以前的记录(如果您需要它们)。

答案 1 :(得分:8)

Wikipedia给出了这个:

  

还有一个不可滚动的游标   称为仅向前,一个可以FETCH   每行最多一次,和光标   自动移动到立即   下一行。之后的获取操作   最后一行已被检索   将光标定位在最后一个之后   行并返回SQLSTATE 02000   (SQLCODE +100)。

而且:

  

程序可以定位可滚动的   光标在结果集中的任何位置   使用FETCH SQL语句。

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

  

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

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

  

请求可滚动游标   您的PDOStatement对象,您必须设置   PDO :: ATTR_CURSOR属性为   准备时PDO :: CURSOR_SCROLL   PDO :: prepare()的SQL语句。

(该页面下方还有一个例子)

有趣的是能够“滚动”结果集,而不必将内存中的所有数据都迭代到它上面。

答案 2 :(得分:2)

对于Mysql ...不支持=不可用(无论是mysql(i)还是PDO):

mysqli_result :: data_seek(),请注意手册说明:“此函数只能与使用mysqli_store_result()或mysqli_query()函数获得的缓冲结果一起使用。” 也就是说,搜索发生在结果集的本地缓存副本上:不在服务器上。因此,它不支持任何“可滚动游标”的建议。