mysql_fetch_array() oder mysql_fetch_object()?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Der_Jan, 22.09.2006.

  1. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    MacUser seit:
    06.01.2004
    Beiträge:
    606
    Zustimmungen:
    7
    Bis heute frage ich meine MySQL per mysql_fetch_array() ab - klappt wunderbar - keine Probleme. Ich habe bei anderen Projekten nun häufiger gesehen, dass Kollegen mit mysql_fetch_object() arbeiten. Ich natürlich neugierig, was wohl der Unterschied ist. Okay, das eine erstellt einen Array, das andere ein Objekt. Besteht irgendeine Notwendigkeit (Sicherheit, Serverbelastung???), künftig nur noch mit mysql_fetch_object() zu arbeiten. Man will ja mit der Zeit gehen ;)

    Danke & Gruß
    Der Jan
     
  2. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.713
    Zustimmungen:
    1.348
    mysql_fetch_array() ist immer dann ein Problem, wenn Du die Reihenfolge der Spalten änderst die Du abfragst. Nett ist auch eine Änderung der Tabelle und dann weiter eine Abfrage mit "select *" und fetch_object. Dann KANN es passieren, daß in einer vermeintlichen Peisspalte z.B. der Mwst-Satz steht.

    Mit Objekten greifst Du halt eindeutig per Name zu:
    $result->preis

    Das ist einfacher und robuster gegen Änderungen! Vor allem in Bezug auf die Wartung von Skripten die auf diese Spalten zugreifen.
     
  3. Nachtschatten

    Nachtschatten MacUser Mitglied

    MacUser seit:
    27.01.2006
    Beiträge:
    300
    Zustimmungen:
    3
    Kann meinen Vorredner nur zustimmen, allerdings solltest Du bei großen DB mit vielen Spalten daraufh achten, das Object ein kleiner "Speicherverschwender" werden kann.

    Wenn Du nicht vorhast, ständig die Spaltenreihenfolge zu ändern, würde ich zwecks Performance und Speicherverbrauch, auf fetch_array() setzen.
     
  4. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.713
    Zustimmungen:
    1.348
    Das stimmt, man kommt dann aber an die Grenze wo man sich fragt, ob die Investition in "die paar Bytes" nicht durch die gewonnene Stabilität wieder ausgeglichen werden. Ich Kapsele beizeiten spezielle Tabellen komplett in Objekten, inklusive Zugriffsmethoden. Dies bei Tabellen bei denen jede Zeile 2-3KB hat und durchaus im Schnitt einige 100 davon je Abfrage zusammenkommen können. Ich kann eine solche Kapselung nur empfehlen, den Preis dafür hat Nachtschatten allerdings genannt!
     
  5. oneOeight

    oneOeight MacUser Mitglied

    MacUser seit:
    23.11.2004
    Beiträge:
    47.183
    Zustimmungen:
    3.687
    und wer hindert dich bei einem array mit $result[preis] zu arbeiten? ;)
     
  6. 2nd

    2nd MacUser Mitglied

    MacUser seit:
    25.07.2004
    Beiträge:
    8.902
    Zustimmungen:
    242
    So arbeite ich z. B. und bekomme auch bei nachträglichen Änderungen in der DB keine Probleme mit den Feldern...

    2nd
     
  7. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.713
    Zustimmungen:
    1.348

    Ich hindere mich ;)
    weil ich die Tabellen komplett in Objekten kapsele (s.o.) !
     
  8. oneOeight

    oneOeight MacUser Mitglied

    MacUser seit:
    23.11.2004
    Beiträge:
    47.183
    Zustimmungen:
    3.687
    das sollte auch nur sagen, dein beispiel war jetzt kein gutes argument warum man das machen sollte ;)
     
  9. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.713
    Zustimmungen:
    1.348
  10. Nachtschatten

    Nachtschatten MacUser Mitglied

    MacUser seit:
    27.01.2006
    Beiträge:
    300
    Zustimmungen:
    3
    Begebe mich jetzt auf glattes Eis, aber ist es nicht so das man array sinnvoll bei SELECT bla1, bla2, bla3 .... anwendet und Object bei der "faulen" Abfrage Select * ... ?
     
Die Seite wird geladen...

Diese Seite empfehlen