AFAIK nie ma możliwości zresetowania pozycji kursora za pomocą PDO - może to mieć związek z kompatybilnością z niektórymi bazami danych, które nie obsługują resetowania wewnętrznych kursorów.
Jeśli chcesz dwukrotnie iterować wyniki, pobierz je do tablicy i wykonaj iterację po tej tablicy:
<?php
$results = $stmt->fetchAll();
foreach($results as $row) {
// first
}
foreach($results as $row) {
// second
}
Edytuj Niektóre bazy danych obsługują kursory przewijalne. Aby tego użyć, dodaj PDO::CURSOR_SCROLL
flaga do prepare
metoda (patrz przykłady na stronie dokumentacji PDOFetch
). Ale to tylko dodaje możliwość poruszania się do przodu lub do tyłu, a nie do całkowitego przewijania do tyłu. Ponadto nie wszystkie bazy danych obsługują ten typ kursora (np. MySQL nie).