假设我使用简单的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()不应该用于大型结果集 . 但问题是: If we can directly transverse the PDOStatement object returned by the prepare() method why do we they make fetchAll() (and fetch())available?
似乎唯一的优势就是可以更早地免费连接!
1 回答
答案很简单:
因为你必须 separate business logic from presentations logic.
首先意味着你必须获得所有必需的数据,然后才开始输出 .
fetchAll在这件事上变得非常方便 .
好吧,仔细看看你的问题
我认为这样的“直接遍历”仅仅是一种语法糖,下面有一个很好的旧fetch()或类似的东西 .