很久以前问过,但目前有另一种解决方案。
方法PDOStatement::fetch() 可以接收第二个参数,即光标方向,带有PDO::FETCH_ORI_* 常量之一。这些参数仅在 PDOStatement 使用属性 PDO::ATTR_CURSOR 作为 PDO::CURSOR_SCROLL 创建时才有效。
这样你可以如下导航。
$sql = "Select * From Tabela";
$statement = $db->prepare($sql, array(
PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,
));
$statement->execute();
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_NEXT); // return next
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_PRIOR); // return previous
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_FIRST); // return first
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_LAST); // return last
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_ABS, $n); // return to $n position
$statement->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_REL, $n); // return to $n position relative to current
docs 和 PDO predefined constants 中的更多信息。
注意:使用PDO::FETCH_BOTH 因为是默认设置,只需为您的项目自定义即可。