Mailinglisten-Archive | 
Martin Spuetz wrote:
> Marian Steinbach wrote:
>> Ich habe erst vor ein paar Tagen einen einfachen Vergleich zwischen
>> den mysql_*-Funktionen, MDB2 und PDO (unter PHP 5.2.1) gemacht und
>> überrascht festgestellt, dass die mysql_* Funktionen die langsamste
>> Variante von den dreien war. Am schnellsten war PDO, insbesondere
>> durch funktionsloses Iterieren durch Ergebnis. (Sprich: anstelle von
>> while ($row = mysql_fetch_row()) nimmt man in PDO "foreach". Wer dazu
>> noch das gesamte Abfrageergebnis in einem einzigen Aufruf in ein
>> PHP-Array zieht, ist noch schneller.).
> 
> Ich würde foreach nicht unbedingt benutzen:
> 
> $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!
> 
> fetchAll() dürfte langsamer sein, ich würde hier auch also auch auf
> while ($query->fetch() setzen.
NFC!
> 
> Gruss,
> Martin
Yannik
    php::bar PHP Wiki - Listenarchive