我想知道我是否做得很好,或者fetchAll()在WHILE中不起作用。
下面是一个例子
$db=new PDO("mysql:host=" .$dbhost. "; dbname=" . $dbname, $dbuser, $dbpass);
$page=$db->prepare("SELECT * FROM page");
$page->execute();
foreach ($page->fetchAll(PDO::FETCH_ASSOC) as $row) {
//echo a row
//is working
}
但是,如果我尝试用一段时间进行循环
while ($row=$page->fetchAll(PDO::FETCH_ASSOC)){
//echo a row
//Show empty
}
我试着只使用fetch(),它起作用了,我的问题是:为什么fetchAll()不能与"WHILE“一起使用?
发布于 2013-07-19 00:46:04
Fetch all返回结果集中剩余的所有记录。考虑到这一点,foreach能够按预期遍历结果集。
等效项,而实现应使用$page->fetch(PDO::FETCH_ASSOC);
while ($row = $page->fetch(PDO::FETCH_ASSOC)){
// do something awesome with row
}
如果您想使用一段时间并获取您所能做的一切
$rows = $page->fetchAll(PDO::FETCH_ASSOC);
// use array_shift to free up the memory associated with the record as we deal with it
while($row = array_shift($rows)){
// do something awesome with row
}
一句警告: fetch all就是这样做的,如果结果大小很大,它会给你的机器带来资源压力。只有当我知道结果集将很小,或者我通过对查询应用限制来强制这一点时,我才会这样做。
https://stackoverflow.com/questions/17729301
复制相似问题