PDOStatement
(yang Anda miliki di $users
) adalah kursor-maju. Artinya, setelah dikonsumsi (foreach
pertama] iterasi), itu tidak akan mundur ke awal kumpulan hasil.
Anda dapat menutup kursor setelah foreach
dan jalankan pernyataan lagi:
$users = $dbh->query($sql);
foreach ($users as $row) {
print $row["name"] . " - " . $row["sex"] . "<br/>";
}
$users->execute();
foreach ($users as $row) {
print $row["name"] . " - " . $row["sex"] . "<br/>";
}
Atau Anda dapat melakukan cache menggunakan CachingIterator
yang disesuaikan dengan cache penuh:
$users = $dbh->query($sql);
$usersCached = new CachedPDOStatement($users);
foreach ($usersCached as $row) {
print $row["name"] . " - " . $row["sex"] . "<br/>";
}
foreach ($usersCached as $row) {
print $row["name"] . " - " . $row["sex"] . "<br/>";
}
Anda menemukan CachedPDOStatement
kelas sebagai inti
. Iterator caching mungkin lebih waras daripada menyimpan set hasil ke dalam array karena masih menawarkan semua properti dan metode PDOStatement
objek yang telah dibungkusnya.