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

为什么我们在使用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.
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?