fetchAll有什么意义?

时间:2012-02-18 01:55:06

标签: php pdo

要从数据库中获取结果,您可以执行以下操作:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
foreach($result as $r) { 
  echo "<pre>";
    print_r($r);
  echo "</pre>";
}

但它似乎无法使用fetchAll,例如:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$result = $sth->execute();
foreach($result as $r) { 
  echo "<pre>";
    print_r($r);
  echo "</pre>";
 }

那有什么区别?

2 个答案:

答案 0 :(得分:3)

fetchAll将读入数据库结果集中的所有行,并从中生成一个数组,将其全部保存在内存中。迭代结果集将从服务器一次获取一行,这将节省PHP端的资源(但可能在数据库服务器上使用更多资源,具体取决于数据库实现)。

答案 1 :(得分:1)

首先我假设你使用的是php PDO

使用fetchAll,您可以将Fetch模式指定为参数,fetchall为返回的行提供更大的灵活性,fetchall将从数据库中读取所有行并转换为数组。

与我猜测的简单执行相比,

fetchall在资源管理方面更有效率。 execute返回的资源也是bool