単純な 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()) を使用可能にするのでしょうか?
唯一の利点は、接続が早く解放されることです。