drbii0359
2015-07-24 07:57
浏览 129
已采纳

为什么我们在使用PDO :: query()时使用fetch()?

So, we know that PDO::query() returns PDOStatement object and the PDOStatement class implements Traversable so it allows us to loop through it's object using foreach loop:

$db = new PDO($dsn, $dbusername, dbpassword);
$sql = 'SELECT name, surname, gender FROM students';
$stmt = $db->query($sql);

foreach($stmt as $row){
    echo $row['name'] . "<br>";
    echo $row['surname'] . "<br>";
    echo $row['gender'] . "<br>";
}

The code is nice and clean. (I know that due to the security issues using query() can create and we all should be faithful to prepare() and excecute() for that.)

My question is why do we bother to use fetch() to retrieve data when we can get the same result without using it. It seems to me an extra step.

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doulandai0641 2016-02-19 12:58
    已采纳
    1. Because there are queries that return only one row, for which a foreach loop would be an extra step.
    2. Because traversable PDOStatement is just a syntax sugar, just another way to do it, for anyone who like it this way. While fetch() remains most familiar and straightforward method.
    打赏 评论

相关推荐 更多相似问题