php – 在PDO中重置光标位置

$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不支持).

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...