zugriff auf stdClass
MB
- datenbank
- php
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
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
jo, was aber nicht mein Problem beseitig 😉.
lgmb
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.
Nachtrag: Error Code
Trying to get property of non-object
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
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