$data=$stmt->fetchAll(); //Dumping the data shows the result. It is also setting the cursor at the end
while($data=$stmt->fetch())
{
//Does not enters loop
//If fetchAll() removes it work as usual
}
我知道它不需要两次获取数据.但我的主要问题是如何在PDO中重置光标位置?
解决方法:
AFAIK不可能使用PDO重置光标位置 – 这可能与某些数据库的兼容性有关,这些数据库不支持重置内部游标.
如果要在结果上迭代两次,请将其提取到数组并迭代此数组:
<?PHP
$results = $stmt->fetchAll();
foreach($results as $row) {
// first
}
foreach($results as $row) {
// second
}
编辑某些数据库支持可滚动游标.要使用它,请将PDO :: CURSOR_SCROLL标志添加到prepare方法(请参阅PDOFetch documentation page中的示例).但这只会增加前进或后退的可能性,而不是完全倒带.此外,并非所有数据库都支持该类型的游标(例如MysqL不支持).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。