• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Feldnamen einer Tabelle bei unbekannter Struktur ermitteln

zoro17

New member
Hallo zusammen,
ich benutze neuerdings Maria DB mit PDO. Funktioniert alles soweit ganz gut.
Nun habe ich beim Reporting ein Problem. Wenn ich eine Tabelle mit
"select * from xyz" abfrage, möchte ich bei der Ausgabe der Daten in einer Liste
in der Kopfzeile den Feldnamen mitausgeben.
Mit
PHP:
	$sql = "SELECT * from xyz";
	foreach ($pdo->query($sql) as $row) {
		echo $row[1]
		echo $row[2]
		echo $row[3]
...
	}
bekomme ich alle Inhalte dargestellt. Ich kenne jedoch zuvor nicht die Anzahl der Felder sowie deren Namen.
Ist es möglich, mit dem select-Befehl auch auf diese Namen zuzugreifen, ohne dass ich per separatem SQL zuvor
die Feldnamen extra ermitteln muss?
Danke.

Viele Grüße
 
Zuletzt bearbeitet von einem Moderator:
Wenn du mit PDO::FETCH_ASSOC arbeitest, bekommst du ein assoziatives Array für jede Zeile und kannst dir da die Namen dann rausholen.
 
Ich kenne jedoch zuvor nicht die Anzahl der Felder sowie deren Namen.
Die solltest du als Programmierer aber kennen und auch nicht SELECT * benutzen, sondern dort die Liste der Feldnamen angeben die du benötigst.
Wenn du die Anzahl und Namen der Felder nicht kennst, dann befürchte ich stimmt etwas mit deinem Tabellendesign nicht.
 
Hallo kkapsner,
vielen Dank für die Antwort. Das habe ich gesucht!

Hallo jspit,
Danke für den Einwurf. Aber ich kenne die Feldnamen nicht, da es nicht meine Tabellen sind. Aufgabe war, auslesen und darstellen.
Mehr nicht.

VG
Uli
 
Du solltest dir aber schon einen Überblick zur Struktur der Tabellen verschaffen.
Dafür gibt es Tools wie phpMyAdmin und HeidiSQL. HeidiSQL ist mein Favorit.
Denn die Feldnamen allein besagen nicht viel. Beugt unliebsamen Überraschungen vor, wie wenn ein Feld mal einen Datentyp inne hat der nicht als Text darstellbar ist oder als Text sehr umfangreich ist.

LG jspit
 
Hallo jspit,
Danke für den Tipp. Ich benutze phpMyAdmin. Kurioserweise bin ich für die Inhalte selbst verantwortlich, die in DB bzw. Tabellen kommen.
Da das Frontend Excel ist, habe ich genug Möglichkeiten, auf Überraschungen zu reagieren.

VG
 
Offenbar will es ihm keiner sagen ... na gut ... spiele ich wieder "Spaßbremse":
SHOW COLUMNS FROM `DEINE_TABLE`; – schau's Dir halt an ... aber mit HeidiSQL! :D
 
Ja, nur hat ihm dieser Thread deutlich beantwortet, dass es nicht geht. In der Folge schreibt man dran, womit er einen Überblick bekommt. Theoretisch kann er sich auch einen Builder bauen, der die komplette Datenbank wie erwähnt einmalig oder bei Bedarf (Methodenaufruf) "auswertet" und als Struktur in beliebigem, brauchbaren Format für Externe unerreichbar ablegt. Alle Folge-Anfragen an die Datenbank können vorab die Struktur aus diesem "Format" zu einer gezielten Table abholen und damit ist es schon kein "separater SQL zuvor" mehr (schon gar nicht im Betrieb). Anders formuliert: Die Wunsch-Anforderung (nur ein Query) funktioniert nicht und man muss einen Kompromiss zwischen eigener Bequemlichkeit und erforderlichem Aufwand finden.

"TO hat gezielt danach gefragt" - okay, dann können wir die Antworten hier zukünftig auf "ja", "nein" oder "was steht in der Konsole" beschränken.
 
Das es mit einer Query geht, hat doch kkapsner gleich in #2 beantwortet:
Wenn du mit PDO::FETCH_ASSOC arbeitest, bekommst du ein assoziatives Array für jede Zeile und kannst dir da die Namen dann rausholen.

In diesen assoziativen Array sind die Feldnamen als Schlüssel und alle Werte vorhanden. Meine Beiträge sind da nur noch Anmerkungen dazu. Der TE verstrickt sich dann m.E. noch in Widersprüche, idem er zuerst behauptet er kenne die Feldnamen nicht und bemerkt später
Kurioserweise bin ich für die Inhalte selbst verantwortlich, die in DB bzw. Tabellen kommen.
Wie auch immer seine Tabellen zustande kommen, der TE hat (s)eine Antwort auf seine Frage bekommen.
 
Zurück
Oben