mysql_fetch_array + index

jenno

Erfahrenes Mitglied
Zuersteinmal, es geht um php und mysql...

Ich frage meine Datenbank ab und will alle Ergebnisse in dem entsprechenden Objekt speichern. Dieses Objekt wird dann in der Session gespeichert undsoweiter. Das funktioniert auch alles prima.

Allerdings habe ich nun festgestellt, dass das Array welches mysql_fetch_array liefert, alle Ergebnisse zweimal enthält. Einmal mit dem Spaltennamen als Index und dann nochmal mit Zahlen als Index.

Da ich das Array nicht einzeln durchlaufen möchte, sondern einfach alle Sessiondaten in einem Rutsch speichern möchte, ist meine Frage, ob es auch möglich ist, dass das Ergebnis von mysql_fetch_array alles nur einmal speichert mit dem Spaltennamen als Index?
 
Ich weiss jetzt nicht 100%ig was du meinst und vorallem wie du das Ganze löst. Aber ich denke mal es ist schon möglich, du musst ja nicht beide Array nehmen, kannst ja nur mit dem arbeiten welches die Spaltennamen als Index liefern...

Wenn ich falsch liege, dann wäre ein wegni Code von deiner Seite nicht schlecht ;)
 
Okay, hier mal ein paar Codeausschnitte:

Das hier passiert in meiner Klasse
PHP:
$query = "SELECT * FROM sessions WHERE seshid = '$this->seshid'";
$result = mysql_query($query);

$this->sessdata = mysql_fetch_array($result);

Wenn ich jetzt ein Objekt $mysesh erzeuge und dann das Array mal testweise auslese mittels

PHP:
foreach($mysesh->sessdata as $key => $value) {
	echo($key.": ".$value."<br>");
}

dann erhalte ich die folgende Ausgabe:

0: de59da9fc5d06aed7acc42ffe80c0db6
seshid: de59da9fc5d06aed7acc42ffe80c0db6
1: 111
userid: 111
2: 1080554341
lastused: 1080554341

Ich lese ja nur ein Array aus und nicht zwei!

Ich hoffe, die Codeauszüge genügen. Ansonsten kann ich auch gern nochmal alles schicken.
 
hm...Das ist ja ein Array dass du dann ausgibst oder? Und wenn du einfach mit einer for-Schleife immer nur die Ausgibst die dann einen nummerischen Index haben?Also eigentlich nicht das "Ganze" Array...
 
Ja, das ist ein Array und ich brauche aus dem Array alles das, was als Index den Spaltennamen der Tabelle hat. Weil so wirds nachher auch angesprochen und da helfen mir die Zahlen leider nicht wirklich weiter, weil dann muss man immer darauf achten, dass die Zahl auch die richtige Tabellenspalte anspricht.
 
dann mach ein Array mit allen Spaltenname, läufst dieses Array hindurch und gisbt dann immer den Inhalt des Sessionarrays aus?!
 
Hi jenno,

die PHP-Fuktion "mysql_fetch_array" hat einen zweiten, optionalen Parameter "Ergebnistyp". Diesem kann eine der Konstanten MYSQL_ASSOC, MYSQL_NUM oder MYSQL_BOTH zugewiesen werden, Default ist MYSQL_BOTH.

Mit MYSQL_ASSOC liefert die Funktion ein assoziatives Array, mit MYSQL_NUM ein numerisches und mit MYSQL_BOTH eben beides.

Mit MYSQL_ASSOC entspricht mysql_fetch_array der Funktion mysql_fetch_assoc, mit MYSQL_NUM ist die Funktion identisch mit mysql_fetch_row.

Wenn Du nun nicht sowohl ein assoziatives als auch ein numerisches Array erhalten willst, dann verwende mysql_fetch_array mit dem entsprechenden zweiten Parameter, oder benutze eine der beiden anderen Funktionen.

Die Online-PHP-Doku erklärt dies eigentlich recht schön:
http://www.php.net/manual/de/function.mysql-fetch-array.php.

Viele Grüße,
Martin

Edit:
Irgendwie verstümmelt das Board die URL, ich versuch's nochmal ohne Link:
http://www.php.net/manual/de/function.mysql-fetch-array.php
 
Zuletzt bearbeitet:
Hi Martin,

vielen Dank für die ausführliche Antwort
Schön, jetzt wo ich das von Dir lese, wird mir einiges klarer. Ist mir schon ein paar mal aufgefallen, dass unterschiedliche Funktionen verwendet werden. Nur kann man solche Dinge wohl doch auch ab und an mal hinterfragen.

Danke und einen schönen Tag!
Jenno
 

Neue Beiträge

Zurück