mysql spaltennamen in array speichern
Marcel
- php
0 Vinzenz Mai0 Marcel0 Vinzenz Mai0 Marcel0 Vinzenz Mai0 dedlfix
0 Christoph Jeschke
Nabend!
Also ich würde gerne alle Spaltennamen von einer mysql Tabelle in einem Array speichern.
Ich hab schon gegoogelt und in touturials geguckt aber ich finde nichts das mich weiter bringt.
Hoffe ihr könnt mir helfen.
Hallo,
Also ich würde gerne alle Spaltennamen von einer mysql Tabelle in einem Array speichern.
das ist leicht, sehr leicht.
Ich hab schon gegoogelt und in touturials geguckt aber ich finde nichts das mich weiter bringt.
Warum hast Du Google befragt? Warum hast Du in Tutorials geschaut?
Das sind zwar grundsätzlich keine schlechten Ideen, aber die erste Anlaufstelle sollten die relevanten Handbücher sein. Hier wäre dies zunächst das MySQL-Handbuch, The INFORMATION_SCHEMA COLUMNS Table zeigt Dir, dass dies mit einer ganz einfachen SELECT-Anweisung geht:
SELECT -- Gib mir
COLUMN_NAME -- die Spaltennamen
FROM -- aus
INFORMATION_SCHEMA.COLUMNS -- COLUMNS im INFORMATION_SCHEMA
WHERE -- wobei nur die Spaltennamen
TABLE_NAME = 'dein_tabellen_name' -- aus einer bestimmten Tabelle
AND
TABLE_SCHEMA = 'name_deiner_datenbank' -- in einer bestimmten Datenbank
-- interessieren.
Wie Du auf das Ergebnis einer Datenbankabfrage mit PHP zugreifst, das solltest Du ja wissen.
Freundliche Grüße
Vinzenz
Hey Vinzenz,
also danke erstmal für deine schnelle Antwort. Hat mich schonmal sehr viel weiter gebracht nur habe ich jetzt ein Problem. Bei mir wird immer nur die erste von 12 Spaltennamen angezeigt. Hier ist mein Code.
<?php
include("db.php");
$result = mysql_query("
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'xxxx'
AND
TABLE_SCHEMA = 'xxx'
");
$res=mysql_query("SELECT * FROM xxxx
LIMIT 1");
$num=mysql_num_fields($res);
mysql_free_result($res);
$ergebnis = mysql_fetch_array($result);
for($i=0; $i<$num; $i++) {
echo "Das ".($i+1).". Element hat den Wert ".$ergebnis[$i]."<br />\n";
}
?>
Hoffe kannst mir nochmal helfen.
Hallo,
also danke erstmal für deine schnelle Antwort. Hat mich schonmal sehr viel weiter gebracht nur habe ich jetzt ein Problem. Bei mir wird immer nur die erste von 12 Spaltennamen angezeigt. Hier ist mein Code.
<?php
include("db.php");
$result = mysql_query("
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'xxxx'
AND
TABLE_SCHEMA = 'xxx'
");$res=mysql_query("SELECT * FROM
xxxx
LIMIT 1");
was bitte soll das? Weg damit. In beiden Fällen fehlt die Fehlerbehandlung.
$num=mysql_num_fields($res);
Das ist was völlig anderes.
Nein, Du solltest nicht an der Anzahl der Spalten Deiner seltsamen zweiten Abfrage interessiert sein, sondern wie üblich an den Datensätzen Deiner ersten Abfrage.
Jeder einzelne Datensatz enthält genau eine Spalte, kein Wunder bei einer Abfrage, die genau eine Spalte abfragt. Sie enthält, wenn Deine Tabelle 12 Spalten besitzt, 12 Zeilen. Frage diese wie üblich ab:
$ergebnis = mysql_fetch_array($result);
Aha, hier kommen wir zur Sache. Du solltest wie üblich mit einer while-Schleife durch die Datensätze durchlaufen.
for($i=0; $i<$num; $i++) {
echo "Das ".($i+1).". Element hat den Wert ".$ergebnis[$i]."<br />\n";
}
?>
Frage nicht nur den ersten Datensatz ab, sondern alle. Jede Zeile liefert Dir genau einen Spaltennamen zurück.
Freundliche Grüße
Vinzenz
Also mal abgesehen das das Absoluter Müll ist...
Ich bekomme die Fehlermeldung:
Notice: Undefined offset: 1 in F:\xampp\htdocs\SLC\login\spiel\test.php.
Wenn ich das richtig verstehe heißt das, dass es $ergebnis[1] garnicht gibt.
Das verstehe ich nur nicht da die Tabelle wie gesagt 12 Spalten hat.
Hallo,
Ich bekomme die Fehlermeldung:
Notice: Undefined offset: 1 in F:\xampp\htdocs\SLC\login\spiel\test.php.
Wenn ich das richtig verstehe heißt das, dass es $ergebnis[1] garnicht gibt.
ja, natürlich.
Beispiel:
Datenbank: beispiel
Tabelle: person mit den vier Spalten
id
vorname
nachname
geburtsdatum
SELECT -- Gib mir
COLUMN_NAME -- die Spaltennamen
FROM -- aus
INFORMATION_SCHEMA.COLUMNS -- COLUMNS im INFORMATION_SCHEMA
WHERE -- wobei nur die Spaltennamen
TABLE_NAME = 'person' -- aus der Tabelle "person"
AND
TABLE_SCHEMA = 'beispiel' -- in der Datenbank "beispiel"
-- interessieren.
liefert als Ergebnis eine einspaltige Tabelle mit vier Datensätzen:
COLUMN_NAME
-----------
id
vorname
nachname
geburtsdatum
Jede Zeile enthält genau einen Spaltennamen. Es gibt *keine* zweite Spalte.
Bei Deinen 12 Spalten gibt es - wie bereits gesagt - 12 Zeilen.
Freundliche Grüße
Vinzenz
echo $begrüßung;
Wenn ich das richtig verstehe heißt das, dass es $ergebnis[1] garnicht gibt.
Wenn du dir über die Struktur oder den Inhalt von Variablen im Unklaren bist, verwende eine Kontrollausgabe:
var_dump($ergebnis);
Ein vorangestelltes <pre> erhöht die Übersichtlichkeit der Ausgabe, vor allem bei komplexen Strukturen.
echo "$verabschiedung $name";
Guten Tag,
Ich hab schon gegoogelt und in touturials geguckt aber ich finde nichts das
mich weiter bringt.
Im PHP-Manual hättest du mysql_list_tables() gefunden. Die Funktion ist zwar als "deprecated" marktiert, aber es ist auch zukunftssichere Lösung vermerkt.
Gruß
Christoph Jeschke