MB: zugriff auf stdClass

moin community,

zu von PHP vordefinierte Klasse stdClass:

Ich will Property-Zugriff der gefetchten Objekten aus der MariaDB-Datenbank von XAMPP. Ich habe PDO verwendet mit $this->handler->setAttribute( 19, 5 ). Zur Info: Diese Werte stellen den FetchMode von Defaultwert FETCH_BOTH zu FETCH_OBJ um.

Mit der Datenbank-Rückgrabe bezoge auf stdClass läuft das wie am Schnürrchen. Das habe ich mit var_dump() nach dem Fetch getesten. Wenn ich explizit auf das/die gefetchte(n) stdClass-Objekt(e) zugreife will, findet er die Property vom Objekt nicht :/ und gibt mir n Error aus.

Kann es sein das ich nicht mit `FETCH_CLASS´ sondern nur mit ´FETCH_OBJ´ ausgegeben habe? Ich mein das ist doch unerheblich oder?

lgmb

  1. Hallo MB,

    Kann es sein das ich nicht mit `FETCH_CLASS´ sondern nur mit ´FETCH_OBJ´ ausgegeben habe? Ich mein das ist doch unerheblich oder?

    Beim Programmieren ist sehr sehr selten etwas unerheblich.

    Bis demnächst
    Matthias

    --
    Rosen sind rot.
    1. jo, was aber nicht mein Problem beseitig 😉.

      lgmb

    2. ok die frage hat sich erübrigt. Ich hab endenkt, dass die Klassen nur in nem numerischen Array sind $foo[ 0 ]->bar. Sry für den Thread.

  2. Nachtrag: Error Code

    Trying to get property of non-object
    
  3. Hallo MB,

    $this->handler->setAttribute( 19, 5 )

    Wiesu tust du su?

    Was spricht gegen diese wunderbar lesbare Zeile:

    $this->handler->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    

    Jedenfalls bekommst Du im FETCH_OBJ Modus stdClass Objekte. Im FETCH_CLASS Modus musst Du entweder über $statement->setFetchMode den Klassennamen explizit angeben, oder als Fetch Mode PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE angeben, dann liest er den Klassennamen aus der ersten Spalte des Ergebnisses.

    Und über setAttribute kann man, wenn ich das richtig sehe, den Klassennamen der für FETCH_CLASS (ohne FETCH_CLASSTYPE) nötig ist, nicht angeben; das geht also nicht.

    Rolf

    --
    sumpsi - posui - clusi
    1. Hallo RolfB,

      $this->handler->setAttribute( 19, 5 )

      Wiesu tust du su?

      Was spricht gegen diese wunderbar lesbare Zeile:

      beschreibende Konstanten finde ich auch super nur es war halt in kurzform im Thread.

      Im FETCH_CLASS Modus musst Du entweder über $statement->setFetchMode den Klassennamen explizit angeben, oder als Fetch Mode PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE angeben, dann liest er den Klassennamen aus der ersten Spalte des Ergebnisses.

      ich übe mich danke für den tipp

      Und über setAttribute kann man, wenn ich das richtig sehe, den Klassennamen der für FETCH_CLASS (ohne FETCH_CLASSTYPE) nötig ist, nicht angeben; das geht also nicht.

      ok danke

      lgmb