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.