mysq_fetch_array
Heiner
- php
0 nd0 Christian Kruse0 nd
0 Heiner0 Sven Rautenberg0 Tom
0 nd0 Christian Kruse0 nd
0 Tobias Kloth0 Tom
Hallo!
Hab ne Frage, was sonst:-)
Ich lese mit der Schleife while($row = mysql_fetch_array($result))eine Tabelle aus.
wenn ich zu Testzwecken den array mit print_r($row) ausgebe ergibt sich
ungefähr folgende Ausgabe:
Array([1] => Romanov [Name] => Romanov)
Mit <?php echo key ($row); ?> wird der numerischen Indize (hier 1) ausgeben.
Doch wie komme ich an den assoziativen Indize [Name] ran. Also nicht Romanov sondern der Spaltenname soll ausgegeben werden
Vielen Dank für jede Antwort im voraus
Gruß Heiner
Hi Heiner,
dazu erst mal ein Link:
http://www.selfphp.de/funktionsreferenz/mysql_funktionen/mysql_fetch_array.php
Wenn ich das richtig verstanden habe, müsstest Du mit
<CUT>
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
foreach(array_keys($row) as $key){
echo $key."\n";
}
}
</CUT>
die Feldnamen erhalten. Allerdings funktioniert bei mir die foreach-Schleife auch ohne "MYSQL_ASSOC"...
Gruß
nd
你好 nd,
Andy-nd? ;-)
Wenn ich das richtig verstanden habe, müsstest Du mit
[...]
Nur zur Info: es gibt jetzt Syntax-Highlighting:
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
foreach(array_keys($row) as $key){
echo $key."\n";
}
}
Hat halt auch den Vorteil, dass Code auch als solcher ausgezeichnet wird.
再见,
克里斯蒂安
Hi Christian,
vielen Dank für den Tipp - habe ich gar nicht mitbekommen, dass es hier jetzt sowas gibt... Gute Sache das...
Gruß
Andy
PS: 你好 - aber das kann ich nun wirklich nicht entziffern... ;o)
你好 Andy,
vielen Dank für den Tipp - habe ich gar nicht mitbekommen, dass es hier
jetzt sowas gibt... Gute Sache das...
Ja, hat sich eine Menge getan :)
PS: 你好 - aber das kann ich nun wirklich nicht entziffern... ;o)
Hehe, das ist nur meine neue Macke ;-) “Hallo” auf chinesisch.
再见,
克里斯蒂安
Danke für die schnelle Antwort!
Ich brauche beide Indizee den numerischen [1] als auch den assoziativen [Name].
Mit MYSQL_ASSOC wird nur der numerische Indize ausgegeben.
Moin!
Ich brauche beide Indizee den numerischen [1] als auch den assoziativen [Name].
Wozu? Das sind doch zwei Arrayeinträge mit demselben Inhalt. In der Datenbank kommt das nicht doppelt vor.
Mit MYSQL_ASSOC wird nur der numerische Indize ausgegeben.
Nein, da sollte nur der Namensindex ausgegeben werden.
Hello Sven,
Wozu? Das sind doch zwei Arrayeinträge mit demselben Inhalt. In der Datenbank kommt das nicht doppelt vor.
Das sind nur zwei gleiche Werte, die aus demselben in der Datenbank erzeugt wurden. Die Arrays [num] und [name] sind aber voneinander unabhängig. Es handelt sich also _leider_ nicht einfach um eine Referenz auf denselben Wert, sondern tatsächlich um zwei Instanzen des gleichen Wertes.
Ich finde, dass das für einen echten Mehrnutzen bei mysql_fetch_array() geändert werden sollte.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Heiner,
<?php
$mysql=mysql_connect("localhost","","");
mysql_select_db("mysql");
$result=mysql_query("SELECT * FROM user LIMIT 0,1");
$row=mysql_fetch_array($result);
$keys=array_keys($row);
for($i=1;$i<=sizeof($keys)-1;$i+=2){
echo "<p>".$keys[$i]."</p>\n";
}
mysql_close($mysql);
?>
Damit bekommst Du nur die Namen. Ist zwar umständlich, geht aber - hoffentlich eine Lösung für Dich...
Gruß
nd
@Christian: Naja, das mit dem Syntax-Highlighting ist dann bei nd wohl nicht...
你好 nd,
@Christian: Naja, das mit dem Syntax-Highlighting ist dann bei nd wohl
nicht...
Wie meinen? Wie gesagt, ueber [ code lang=php]...[ /code] kannst du den
Code hervorheben. Die Leerzeichen musst du allerdings weglassen, die hab
ich nur reingemacht, damit das nicht als PHP-Block erkannt wird ;-)
再见,
克里斯蒂安
Hi Christian,
ah so geht das!! Hab' im FAQ nichts gefunden, daher... Nur als registrierter Benutzer habe ich dann eine Option zum Aktivieren des Syntax-Highlighting gesehen. Danke für den Tipp!
简体中文版
nd
你好 nd,
ah so geht das!! Hab' im FAQ nichts gefunden, daher...
Ja... da muss noch jemand ran und die aktualisieren (*hint* Tihim!)
简体中文版
Hehe ;-) “Vereinfachte chinesische Ausgabe”
再见,
克里斯蒂安
Hallo Heiner,
Array([1] => Romanov [Name] => Romanov)
Mit <?php echo key ($row); ?> wird der numerischen Indize (hier 1) ausgeben.
Doch wie komme ich an den assoziativen Indize [Name] ran.
<zitat quelle="http://de3.php.net/key">
key() returns the index element of the current array position.
</zitat>
key() liefert also immer das den Schlüssel der aktuellen Position im Array - wenn du die anderen Schlüssel auch möchtest, musst du das Array mit z.B. foreach durchlaufen.
Also nicht Romanov sondern der Spaltenname soll ausgegeben werden
du könntest natürlich auch gleich mysql_fetch_assoc() verwenden - oder du verwendest DESCRIBE.
Grüße aus Nürnberg
Tobias
Hello,
Doch wie komme ich an den assoziativen Indize [Name] ran. Also nicht Romanov sondern der Spaltenname soll ausgegeben werden
Das ist der Trick bei "PHP-Arrays". Das sind eigentlich Baumstrukturen, also baumartig verkettete Listen. Die Arrays, die z.B. durch mysql_fetch_assoc() entstehen, kannst Du daher ganz leicht mit einer Spezialfunktion abfragen:
if(isarray($_row))
foreach($_row as $name => $fieldvalue)
{
echo "<p><strong>$name:</strong> $fieldvalue</p>\n";
}
Probier mal ein bisschen damit herum
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
if(isarray($_row))
Das müsste wohl eher is_array() heißen ;-)
MfG, Dennis.
Hello,
if(isarray($_row))
Das müsste wohl eher is_array() heißen ;-)
Jaaa, verda.....
Aber das hätte der OP doch sicher auch selber gemerkt. Ich war mir zwar sicher, dass ich den Unterstrich getippt hatte, aber da war der Kopf mal wieder schneller, als die Finger.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom!
Ja, ich glaube das ist die richtige Richtung!
Danke:-)))))))