PHP Feldnamen einer Tabelle ausgeben - Wie?

mikelsdump

Ensign
Registriert
Aug. 2008
Beiträge
133
Hallo alle,

bin Anfänger in der Kombination PHP mit MySQL und bräuchte Hilfestellung.

Ich möchte, dass alle Feldnamen einer Tabelle ausgegeben werden.

Meinem Verständnis nach muss ich dafür folgendes tun:

  1. Die Anzahl der Felder (Spalten) ermitteln
  2. Eine Schleife erstellen, die bis zum ermittelten Wert (Anzahl der Felder) wiederholt wird und die Namen der Felder schreibt

Oder gibt es einen Weg die Zählerei im ersten Punkt wegzulassen? Also zu sagen "Schreibe ALLE Felder hin"?

So wie ich das gelesen habe, muss ich das mit dem Befehl mysql_query und mit
PHP:
SHOW COLUMNS FROM table [LIKE 'name']
machen. Nur wie, weiß ich nicht, auch in Bezug auf die Schleife (wie lautet die Bedingung?). Kann mir das jemand irgendwie erläutern? Danke im Voraus schonmal :)
 
PHP:
// Datenbankabfrage
$sql = "SHOW COLUMNS FROM tabelle"
$result = mysql_query($sql,$link);

// Anzahl in eine Variable
$anzahl = mysql_num_rows($result);

echo "Es sind ".$anzahl." Felder<br><br>";

// in einer Schleife Feldnamen und Typ ausgeben falls Du das noch brauchst

for($i = 0; $i < mysql_num_rows($result); $i++)
{
$row = mysql_fetch_array($result);
echo $row[0].": ".$row[1]."<br>";
}

Nicht getestet :-)
 
@Syntec:
Vielen Dank für den code. Der funktioniert. Aber ich würde gerne verstehen, warum hier der operator mysql_num_rows verwendet wird. Sollte die normalerweise nicht die Zeilen (rows) zählen statt der Spalten (columns)? (So liest es sich jedenfalls auch bei phpbox). Warum gibt der operator tatsächlich die spaltennamen an? Und wenn das die eigentliche Ausles-Funktion ist, wozu benötigt man dann SHOW_COLUMNS?

Nur damit ich es richtig verstanden habe: Da du diesen Code gepostet hast, gibt es also keine Möglichkeit den Befehl zum Zählen der Spalten zu umgehen?

@Suxxess:
"Leicht" ist eine Frage des Standpunktes. Google habe ich redlich bemüht, auch auf Schattenbaum war ich, habe es aber nicht 100% verstanden. Wenn du mein post nochmal liest, habe ich nicht nach code gefragt, sondern nach dem "wie". und hinsichtlich dessen habe ich nichts gefunden, das mir zugänglich war.Der Code von Schattenbaum, den du aufgeführt hast tut übrigens etwas ganz anderes als das wonach ich gefragt habe. Jetzt also Zwischenstand im Klugscheissen: Suxxess 1, mikelsdump 1.
 
Zuletzt bearbeitet:
mikelsdump schrieb:
@Syntec:
Vielen Dank für den code. Der funktioniert. Aber ich würde gerne verstehen, warum hier der operator mysql_num_rows verwendet wird. Sollte die normalerweise nicht die Zeilen (rows) zählen statt der Spalten (columns)? (So liest es sich jedenfalls auch bei phpbox). Warum gibt der operator tatsächlich die spaltennamen an? Und wenn das die eigentliche Ausles-Funktion ist, wozu benötigt man dann SHOW_COLUMNS?

Du denkst komplett in die falsche Richtung. Du denkst nicht in Relationen und dem Aufbau eines RDBMS.

"SHOW COLUMNS FROM tabelle" macht nix anderes, als dir alle Spaltennamen zurückzugeben, und zwar als Datenset. Im Endeffekt verhält es nicht nicht anders als eine beliebige SELECT-Anweisung, stell es dir "SHOW COLUMNS" so vor, als wäre es ein "SELECT columnnames FROM tabelle" (nur dass du SELECT eben nur auf Spalten (besser: Spalteninhalte) anwenden kannst, während du SHOW auf Tabellendeklarationen anwendest.
Dein Ergebnis ist ein der gewählten Schnittstelle angepasstes Datenset, z.B. ein Array oder ein PDO-Ergebnis. Jeder Abfragen-Hit (in dem Falle: ein Spaltenname) ist eine Zeile des Ergebnisses.
 
Hey danke ihr beiden, eure Antworten haben mir sehr viel gebracht für's Verständnis :) Da lag mein Problem, ich wußte nicht, dass das Zeug tatsächlich wiederrum als separate Tabelle ausgegeben wird, in der die ursprünglichen Spaltennamen wiederrum einzelne Einträge in der ersten Spalte sind.

PS:
Ich habe übrigens noch weitergelesen auf dev.mysql über die Show extensions. Liege ich richtig in der Annahme, dass ein Befehl folgendermaßen lauten müsste, um aus allen existierenden Tabellen diejenige zu finden, die eine bestimmte Zeichenkette enthält:

PHP:
SHOW TABLES FROM $Database WHERE tablename LIKE $Search

Bin mir v.a. bei dem "tablename" nicht sicher...gibt's den ausdruck?
 
Zuletzt bearbeitet:
Zurück
Oben