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