Mailinglisten-Archive |
Yannik Hampe wrote: >> $sql = "SELECT * FROM table WHERE id = ?"; >> $query = $pdo->prepare($sql); >> $query->execute(array($id)); >> >> foreach ($query->fetch(PDO::FETCH_ASSOC) as $row) { >> >> Wenn du jetzt keinen passende Tupel in der DB hast, liefert fetch() >> false zurück, damit kann forech nix anfangen und wirft einen PHP Fehler. > > Du machst das ja auch falsch... Richtig: > > $sql = "SELECT * FROM table WHERE id = ?"; > $query = $pdo->prepare($sql); > $query->execute(array($id)); > > foreach ($query as $row) { ... > > (->fetch weg! sonst iterierst du sowioeso nicht über die Datensätze > sondern nur die Felder des einen! blödes Beispiel stell dir id > ? vor, aber auch egal. foreach ($query as $row) ist natürlich der beste Weg. War hier gedanklich in einem Projekt und da geht das so nicht. >> fetchAll() dürfte langsamer sein, ich würde hier auch also auch auf >> while ($query->fetch() setzen. > > NFC! Ähmm, ist zwar jetzt überlüssig, aber ich meinte sowas: $all = $query->fetchAll(PDO::FETCH_ASSOC); foreach ($all as $row) { $d = new dataset(); $d->foo = $row["bar"]; } oder while ($field = $query->fetch(PDO::FETCH_ASSOC)) { $d =new dataset(); $d->foo = $field["bar"]; } Martin
php::bar PHP Wiki - Listenarchive