PDOStatement
($users
にあります )はフォワードカーソルです。つまり、一度消費されると(最初のforeach
反復)、結果セットの先頭に巻き戻されません。
foreach
の後でカーソルを閉じることができます ステートメントを再度実行します:
$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/>";
}
または、調整されたCachingIterator
を使用してキャッシュすることもできます フルキャッシュを使用する場合:
$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/>";
}
CachedPDOStatement
を見つけます 要旨としてのクラス
。キャッシュイテレータは、PDOStatement
のすべてのプロパティとメソッドを引き続き提供するため、結果セットを配列に格納するよりもおそらく適切です。 ラップしたオブジェクト。