简体   繁体   中英

Why do we use fetch() while using PDO::query()?

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. 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM