Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 23.09.2004 23:00:55 von Michael Rittweger
Hallo, allerseits!
In SelfPHP und auf php.net finde ich nur die 'unschöne' Methode:
$row = mysql_fetch_row();
feld = $row[3];
In einem älteren Posting hier sah ich:
$feld = $row->feldname;
Schon begann ich zu jubeln und stellte mein Script auf diese bedeutend
leserlichere Form um... und fiel prompt auf die Nase, weil es nicht
funktionierte.
phpinfo() auf dem Server meines Webhosters ergibt u.a.:
PHP Version 4.3.1
Welche (andere) Möglichkeit habe ich, die Spalten über ihren Namen anstelle
der Indizes anzusprechen? Da die Datenbank noch im Aufbau ist, wird es
sicherlich passieren, daß hier und da noch ein Feld eingefügt wird. Und wenn
ich dann jedesmal alle Scripte anpassen muß, werd ich wahnsinnig.
Gruß, Michael
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 23.09.2004 23:30:48 von Daniel Jaenecke
Michael Rittweger schrieb:
> In SelfPHP und auf php.net finde ich nur die 'unschöne' Methode:
> $row = mysql_fetch_row();
> feld = $row[3];
SelfPHP sei jetzt mal ignoriert, aber wenn Du auf php.net nur
mysql_fetch_row() findest liegt das an Dir!
> In einem älteren Posting hier sah ich:
>
> $feld = $row->feldname;
>
> Schon begann ich zu jubeln und stellte mein Script auf diese bedeutend
> leserlichere Form um... und fiel prompt auf die Nase, weil es nicht
> funktionierte.
Erm... Du machst ein mysql_fetch_row() und versuchst dann obiges?
Das hat dann eher gar nichts mit der verwendeten PHP-Version zu tun.
> phpinfo() auf dem Server meines Webhosters ergibt u.a.:
> PHP Version 4.3.1
Dann teile Deinem Webhoster doch mal mit, daß mittlerweile 4.3.9 aktuell
ist.
> Welche (andere) Möglichkeit habe ich, die Spalten über ihren Namen anstelle
> der Indizes anzusprechen? Da die Datenbank noch im Aufbau ist, wird es
> sicherlich passieren, daß hier und da noch ein Feld eingefügt wird. Und wenn
> ich dann jedesmal alle Scripte anpassen muß, werd ich wahnsinnig
Wie oben schon angedeutet, lies das Manual.
Unter findest Du alle auf MySQL bezogenen
Funktionen, die mit mysql_fetch_ beginnenden sind die von Dir gesuchten.
Gruß
-dj-
--
Just because someone's a member of an ethnic minority doesn't mean
they're not a nasty small-minded little jerk
[Terry Pratchett, Feet Of Clay]
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 24.09.2004 01:44:57 von Michael Rittweger
Hallo, Daniel!
> aber wenn Du auf php.net nur
> mysql_fetch_row() findest liegt das an Dir!
Nö, denn das war ja nicht das, wonach ich suchte. ich suchte nach
(DB-)Arrays und Möglichkeiten, diese zu benutzen.
> > $feld = $row->feldname;
> Erm... Du machst ein mysql_fetch_row() und versuchst dann obiges?
Nicht ich, sondern jemand in einem Posting aus ca. Mai. Ich hab
dclp.datenbanken und dclp.misc erst heute (wieder, nach 2 oder 3 Jahren
Pause) bestellt, aber den TOL-Newsbestand kpl. geladen und (zumindest quer)
durchgelesen.
Es sah für mich aus wie eine Syntax, mit der ich das Array über Feldnamen
statt über numerische Indizes ansprechen könnte. Allerdings war obiges nur
in einem Thread zu einem anderen Thema und nur in einem Nebenabsatz. Aus dem
Zusammenhang gerissen kann es gut sein, daß ich das falsch verstanden habe.
> > PHP Version 4.3.1
> teile Deinem Webhoster doch mal mit, daß mittlerweile 4.3.9 aktuell ist.
Was konkret würde das an meinem Problem ändern?
....
Ein einfacher Hinweis, daß ich mit der Array-Syntax auf dem Holzweg bin und
mysql_fetch_array() mein Freund sein könnte, wäre wirklich bedeutend
sinnvoller gewesen. In den von mir bislang benutzen Texten wurde immer
mysql_fetch_row() benutzt und nicht auf eine andere Möglichkeit verwiesen.
Der Hinweis kam aber mittlerweile per Mail (danke, Thomas!).
> -dj-
Gruß, Michael
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 24.09.2004 05:18:06 von Niels Braczek
Michael Rittweger schrieb:
> Ein einfacher Hinweis, daß ich mit der Array-Syntax auf dem Holzweg
> bin und mysql_fetch_array() mein Freund sein könnte, wäre wirklich
> bedeutend sinnvoller gewesen. In den von mir bislang benutzen Texten
> wurde immer mysql_fetch_row() benutzt und nicht auf eine andere
> Möglichkeit verwiesen.
Der Hinweis auf das Manual war durchaus gerechtfertigt; dort hättest du
nämlich mysql_fetch_object() gefunden, das der von dir erwähnten Syntax
zugrunde liegt, aber auch mysql_fetch_assoc(), das für deine Zwecke
ideal ist.
MfG
Niels
--
IcH fInDe AuCh, dAsS eS nIcHt So WiChTig IsT, eInEn TeXt In KoRrEcKtEr
gRoSs- Und KlEiNsChReIbUnG zU vErFaSsEn, Da DiEs DeR LeSbArKeIt KaUm
AbBrUcH tUt UnD zUdEm AuSdRuCk MeInEr InDiViDuAlItAeT iSt.
[Joachim Kromm in dsnu]
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 24.09.2004 10:21:34 von Daniel Jaenecke
Michael Rittweger wrote:
> Ein einfacher Hinweis, daß ich mit der Array-Syntax auf dem Holzweg bin
> und mysql_fetch_array() mein Freund sein könnte, wäre wirklich bedeutend
> sinnvoller gewesen. In den von mir bislang benutzen Texten wurde immer
> mysql_fetch_row() benutzt und nicht auf eine andere Möglichkeit verwiesen.
>
> Der Hinweis kam aber mittlerweile per Mail (danke, Thomas!).
| Wie oben schon angedeutet, lies das Manual.
| Unter findest Du alle auf MySQL bezogenen
| Funktionen, die mit mysql_fetch_ beginnenden sind die von Dir gesuchten.
Wie einfach hättest Du es denn gerne?
-dj-
--
NP: Marillion - Fugazi - Assassing
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 24.09.2004 13:27:18 von Michael Rittweger
Hallo, Niels!
> Der Hinweis auf das Manual war durchaus gerechtfertigt;
Ja, das ist ja auch ok. Ich bekam ja den Hinweis auf mysql_fetch_array(),
wodurch ich dann ja auch auf mysql_fetch_assoc() stieß.
Mein Problem war ja nicht, daß ich keine Daten aus der Tabelle rausbekam,
sondern daß ich völlig auf dem Holzweg war, wie ich sie danach ansprechen
kann. (Schau nochmal genau auf den Betreff, dann wird die Malaise deutlich.)
Ich war davon ausgegangen, daß -> was mit (Datenbank-)Arrays zu tun hat. Daß
sich diese Schreibweise auf Objekte bezieht, darauf hätte ich kommen können,
weil es in LPC auch so benutzt wird. Spätestens dann hätte ich aber erst
recht auf dem Schlauch gestanden, weil mysql_fetch_row() ja gar kein Objekt
zurückliefert, sondern eben ein Array. Wahrscheinlich hätte ich dann
verzweifelt nach einer Möglichkeit gesucht, das Array in ein Objekt
umzuwandeln.
Verstehst Du? Ich bin einfach auf der Suche nach der richtigen Syntax in
eine falsche Richtung galoppiert. Und von so einem Weg bringt einem dann ein
zu vager Hinweis auch nicht ab, weil der gedankliche Fehler schon eine Stufe
zu tief sitzt.
> Niels
Gruß, Michael
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname statt Index
am 24.09.2004 13:34:18 von Michael Rittweger
Hallo, Daniel!
> Wie einfach hättest Du es denn gerne?
Hm, so in der Art vielleicht:
a) Mit $row->feldname benutzt Du ein Objekt. Da wirst Du mit einem Array, so
wie Du es versuchst, nichts werden. Was Du suchst ist mysql_fetch_objekt().
(Danke, Niels)
b) Um Einen Datensatz über Feldnamen ansprechen zu können, mußt Du
mysql_fetch_array/assoc() benutzen. Das Ergebnis von mysql_fetch_row() kann
nur über numerische Indizes angesprochen werden. (Danke, Thomas)
> -dj-
Gruß, Michael
Re: Ansprechen des Arrays nach mysql_fetch_row() ueber feldname stattIndex
am 25.09.2004 16:58:26 von Stefan Hegenbart
Michael Rittweger wrote:
> Hallo, allerseits!
>
> In SelfPHP und auf php.net finde ich nur die 'unschöne' Methode:
>
> $row = mysql_fetch_row();
> feld = $row[3];
>
> In einem älteren Posting hier sah ich:
>
> $feld = $row->feldname;
>
> Schon begann ich zu jubeln und stellte mein Script auf diese bedeutend
> leserlichere Form um... und fiel prompt auf die Nase, weil es nicht
> funktionierte.
>
> phpinfo() auf dem Server meines Webhosters ergibt u.a.:
> PHP Version 4.3.1
>
> Welche (andere) Möglichkeit habe ich, die Spalten über ihren Namen anstelle
> der Indizes anzusprechen? Da die Datenbank noch im Aufbau ist, wird es
> sicherlich passieren, daß hier und da noch ein Feld eingefügt wird. Und wenn
> ich dann jedesmal alle Scripte anpassen muß, werd ich wahnsinnig.
>
> Gruß, Michael
>
>
Vielleicht wurde die Antwort auch schon gegeben, aber ich schreibs noch
einmal:
mysql_fetch_row liefert ein numeriertes Array zurück. D.h. kein
assoziatives in dem du mit den Feldnamen arbeiten kannst.
Deine Alternativen wären:
mysql_fetch_assoc - liefer ein assoziatives, nicht nummeriertes array
zurueck in dem du NUR mit den feldnamen arbeiten kannst
mysql_fetch_array - liefert ein array zurueck, welches sowohl nummeriert
ist als auch assoziative elemente besitzt. man kann also auf beiden
wegen zugreifen.
mysql_fetch_object - daher kommt die schreibweise $feld =
$row->feldname; .. oder gar $feld = $row->0; - auch so laesst sich auf
ein array zugreifen.
im manual einfach mal nach mysql_fetch_* suchen.
mit Grüßen
S.H.
--
"The goal of Computer Science is to build something that will last at
least until we've finished building it." -- unknown