PDO - >为什么要使用fetchAll?

时间:2013-01-27 12:44:06

标签: php pdo

假设我使用简单的SELECT语句查询我的数据库。

$sql='SELECT * FROM products';
$s=$db->prepare($sql);
$s->execute();
foreach($s as $v){
   echo $v['productName'];
}
$s->closeCursor();

但是我看到以下代码,使用fetchAll()执行相同的操作:

$sql='SELECT * FROM products';
$s=$db->prepare($sql);
$s->execute();
$products=$s->fetchAll();
$s->closeCursor();
foreach($products as $v){
   echo $products['productName'];
}

首先,我知道fetchAll()不应该用于大型结果集。 但是,问题是:如果我们可以直接横向执行prepare()方法返回的PDOStatement对象,为什么我们让fetchAll()(和fetch())可用?

似乎唯一的优势就是可以提前释放连接!

1 个答案:

答案 0 :(得分:3)

答案很简单:
因为您必须将业务逻辑与演示逻辑分开。
首先意味着您必须获得所有必需的数据,然后才开始输出 fetchAll在这件事上变得非常方便。

好吧,仔细看看你的问题后

  

如果我们可以直接横向PDOStatement对象,为什么它们使fetchAll()(和fetch())可用?

我认为这样的“直接遍历”仅仅是一种语法糖,下面有一个好的旧fetch()或类似的东西。