一个
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的Fullcache进行缓存:
$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已包装对象的所有属性和方法。



