PHP PDO MySQL可滚动游标不起作用
Posted
技术标签:
【中文标题】PHP PDO MySQL可滚动游标不起作用【英文标题】:PHP PDO MySQL scrollable cursor doesn't work 【发布时间】:2012-08-16 04:40:51 【问题描述】:例如,我有一个包含两个字段的表:id、value。我在这个表中插入了将近 100k 行。
我想使用可滚动光标。我写了以下代码:
<?php
...
$sql = 'SELECT id FROM cursor_test;';
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 3);
var_dump($row['id']); // 1, expected value is 3
我做错了什么?
【问题讨论】:
【参考方案1】:好像mysql不支持可滚动游标。
https://bugs.php.net/bug.php?id=34625
http://www.php.net/manual/en/pdostatement.fetch.php#105277
Will PDO laststatment->fetchAll(PDO::FETCH_COLUMN, $column) rerun the query each call?
【讨论】:
也许吧,但是这个bug是在2005年报告的。MySQLi扩展怎么样?我看到有设置搜索的功能......你知道吗? 我以前用过mysql扩展(不是mysqli),它也有seek功能。老实说,我不知道它是如何工作的,但我没有在网上找到任何在 PDO 中提供类似功能但只是获取所有结果等解决方法的东西。 @egemadra mysql 的data_seek()
函数获取所有行。它看起来像一个光标,但实际上不是。以上是关于PHP PDO MySQL可滚动游标不起作用的主要内容,如果未能解决你的问题,请参考以下文章