Preguntado hace mucho tiempo, pero actualmente hay otra solución. El método PDOStatement::fetch()
puede recibir un segundo parámetro, la orientación del cursor, con una de las constantes PDO::FETCH_ORI_*
. Estos parámetros solo son válidos si el PDOStatement
se crea con el atributo PDO::ATTR_CURSOR
como PDO::CURSOR_SCROLL
.
De esta manera puede navegar de la siguiente manera.
$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
Más información en docs y PDO predefined constants.
Nota: utilizado PDO::FETCH_BOTH
porque es el predeterminado, simplemente personalícelo para su proyecto.
PdoStatement ya implementa Traverseable – troelskn