发布
社区首页 >问答首页 >php PDO foreach ()-虽然不能工作,但是fetchAll可以工作

php PDO foreach ()-虽然不能工作,但是fetchAll可以工作
EN

Stack Overflow用户
提问于 2013-07-19 00:39:10
回答 5查看 64.7K关注 0票数 8

我想知道我是否做得很好,或者fetchAll()在WHILE中不起作用。

下面是一个例子

代码语言:javascript
代码运行次数:0
复制
$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
}

但是,如果我尝试用一段时间进行循环

代码语言:javascript
代码运行次数:0
复制
while ($row=$page->fetchAll(PDO::FETCH_ASSOC)){

//echo a row
//Show empty
}

我试着只使用fetch(),它起作用了,我的问题是:为什么fetchAll()不能与"WHILE“一起使用?

EN

Stack Overflow用户

发布于 2013-07-19 00:46:04

Fetch all返回结果集中剩余的所有记录。考虑到这一点,foreach能够按预期遍历结果集。

等效项,而实现应使用$page->fetch(PDO::FETCH_ASSOC);

代码语言:javascript
代码运行次数:0
复制
while ($row = $page->fetch(PDO::FETCH_ASSOC)){
   // do something awesome with row
} 

如果您想使用一段时间并获取您所能做的一切

代码语言:javascript
代码运行次数:0
复制
$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就是这样做的,如果结果大小很大,它会给你的机器带来资源压力。只有当我知道结果集将很小,或者我通过对查询应用限制来强制这一点时,我才会这样做。

票数 21
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17729301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档