PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql_fetch_array + foreach läuft Amok



axeljaeger
22-06-2003, 16:07
Ich bin gerade dran, ein kleines Jahrbuch mit PHP und MySQL zu entwickeln. Jetzt möchte ich einen Datensatz auf einer Seite anzeigen und hab bisher folgenden Code:



$query = mysql_query("SELECT * from $usertable WHERE id = '{$_GET["member"]}' LIMIT 1;");

if(! $query)
echo mysql_error();

$user = mysql_fetch_array($query);
foreach($user as $field=>$value)
echo "<tr><td>$field</td><td>$value</td></tr>";


Es sollte für jede Spalte der Zeile mit der Nummer {$_GET["member"]} meiner MySQL Tabelle eine Zeile einer Tabelle erzeugt werden, wo in der ersten Spalte der Name der Tabellenspalte steht und in der zweiten Spalte der Wert in dieser Zeile. Es kommt aber etwa anderes höchst interessantes heraus. Jeder Eintrag wird nämlich zweimal ausgeben, einmal so wie es sein soll und einmal mit einer fortlaufenden Nummer in der ersten Spalte anstatt dem Spaltennamen. Ich könnte natürlich ein Workaround bauen und einfach jedes zweite mal ein continue machen, ich würd das Problem aber am liebsten gar nicht erst auftreten lassen. Hier mal das, was rauskommt:



0 Jäger
nachname Jäger
1 Axel
vorname Axel
2 Alexx
doppelname Alexx
3 0000-00-00
geburt 0000-00-00
4 axeljaeger@web.de
email axeljaeger@web.de
5 Computer, Mountainbike
hobbys Computer, Mountainbike
6 0
bild 0
7 1
id 1
8 1
groupid 1
9 7815696ecbf1c96e6894b779456d330e
pw 7815696ecbf1c96e6894b779456d330e

Gaert
22-06-2003, 19:03
Hallo!

Das ist die Standard Rückgabe von mysql_fetch_array (Numerischer Wert und Feldname) - MYSQL_BOTH

Wenn du nur Feldnamen haben möchtests lautet der Aufruf
$user = mysql_fetch_array($query, MYSQL_ASSOC);
bzw.
$user = mysql_fetch_array($query, MYSQL_NUM);
wenn du nur Zahlen möchtest.

Ansonsten RTFM: http://de3.php.net/manual/de/function.mysql-fetch-array.php

Gruß,

Gaert

axeljaeger
23-06-2003, 14:09
Ja, stimmt, ich war sehr voreilig mit Posten. Mir ist noch der Gedanke gekommen, das es sicher eine Funktion gibt, mit der man sich die Spaltennamen holen kann, um dann aus dem Array nur die Felder auszulesen, die Spaltennamen sind