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

    Beiträge:
    609
    Zustimmungen:
    7
    Mitglied seit:
    06.01.2004
    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

    Beiträge:
    14.837
    Zustimmungen:
    1.431
    Mitglied seit:
    13.09.2004
    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

    Beiträge:
    300
    Zustimmungen:
    3
    Mitglied seit:
    27.01.2006
    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

    Beiträge:
    14.837
    Zustimmungen:
    1.431
    Mitglied seit:
    13.09.2004
    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

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

    2nd MacUser Mitglied

    Beiträge:
    8.901
    Zustimmungen:
    242
    Mitglied seit:
    25.07.2004
    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

    Beiträge:
    14.837
    Zustimmungen:
    1.431
    Mitglied seit:
    13.09.2004

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

    oneOeight MacUser Mitglied

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

    wegus MacUser Mitglied

    Beiträge:
    14.837
    Zustimmungen:
    1.431
    Mitglied seit:
    13.09.2004
  10. Nachtschatten

    Nachtschatten MacUser Mitglied

    Beiträge:
    300
    Zustimmungen:
    3
    Mitglied seit:
    27.01.2006
    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