Spaltennamen einer Tabelle ermitteln?
Olly
- programmiertechnik
0 Thomas Luethi0 Olly0 Thomas Luethi0 Olly
0 Tom
Hallo,
wie man die Tabellennamen einer Datenbank (mySQL) ermittelt ist klar:
$result = mysql_query("show table status from $strDBName");
while ($row = mysql_fetch_assoc($result))
{
echo $row['Name';
}
Wie komme ich an die Spaltennamen einer Tabelle ran??
Ich möchte mir sämtliche Spaltennamen einer beliebigen Tabelle - ähnlich wie oben - anzeigen lassen.
Vielen Dank und Grüße
Olly
Hallo,
Wie komme ich an die Spaltennamen einer Tabelle ran??
PHP: mysql_field_name()
MySQL: SHOW COLUMNS
Details in den entsprechenden Manuals.
Gruesse,
Thomas
Hi Thomas,
ich bekomms einfach nicht hin:-(
Bin z.B. ratlos warum folgender Code nicht funktioniert:
$result=mysql_query("SHOW COLUMNS FROM $Tabelle");
$array = mysql_fetch_array($result);
echo $array[2];
Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Danke und Grüße
Olly
Hallo,
Bin z.B. ratlos warum folgender Code nicht funktioniert:
$result=mysql_query("SHOW COLUMNS FROM $Tabelle");
$array = mysql_fetch_array($result);
echo $array[2];Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Der Query-String ist offenbar falsch.
Setze den Query-String zuerst zusammen, und lass ihn Dir ausgeben.
$sql="SHOW COLUMNS FROM $Tabelle";
print("<p>Query: [$sql]</p>\n");
Setze dann erst die Query an die Datenbank ab.
$result=mysql_query($sql);
Und bevor Du auf $resultat zugreifst, pruefe zuerst, ob es ueberhaupt
existiert.
if (!$result) /* Gar kein Ergebnis */
{
echo "<h2>DB-Fehler:</h2>";
echo "<p>Fehler Nr. ".mysql_errno().": ".mysql_error()."</p>\n";
}
else /* Ein Ergebnis mit 0 oder mehr Zeilen */
{
/* _Jetzt_ kannst Du weiterfahren mit mysql_fetch_result oder so... */
}
Folgender Code funktioniert bei mir:
---
$ftabname="meinetabelle";
$sql="SHOW COLUMNS FROM $ftabname";
print("<p>Query: [$sql]</p>\n");
$ergebnis=mysql_query($sql);
if (!$ergebnis) /* Gar kein Ergebnis */
{
$htmlout.="<h2>Fehler bei Tabelle [<code>$ftabname</code>]:</h2>";
$htmlout.="<p>Die Felder der Tabelle können nicht aufgelistet werden, oder die Tabelle existiert gar nicht</p>\n";
$htmlout.="<p>Fehler Nr. ".mysql_errno().": ".mysql_error()."</p>\n";
}
else /* Ein Ergebnis mit 0 oder mehr Zeilen */
{
$anzahlspalten=mysql_num_fields($ergebnis);
$anzahlzeilen=mysql_num_rows($ergebnis);
print("<p>Tabelle: [$ftabname].</p>\n");
print("<p>MySQL-Resultat: Anzahl Spalten: [$anzahlspalten], Anzahl Zeilen:[$anzahlzeilen]</p>\n");
$htmlout .= "<table border='1'>\n";
$htmlout.="<tr>\n";
for ($i=0; $i<$anzahlspalten; $i++)
{ $htmlout.="<th>".mysql_field_name($ergebnis,$i)."</th>\n"; }
$htmlout.="</tr>\n";
if ($anzahlzeilen==0)
{ $htmlout.="<tr><td colspan='$anzahlspalten'>(Leer.)</td></tr>\n"; }
else
{
while ($zeile=mysql_fetch_row($ergebnis))
{
$htmlout .= "<tr>\n";
for ($i=0; $i<$anzahlspalten; $i++)
{
$feldinhalt=htmlentities(stripslashes($zeile[$i]));
$htmlout.="<td>$feldinhalt</td>\n";
}
$htmlout.="</tr>\n";
}
}
$htmlout.="</table>\n";
}
print($htmlout);
---
Resultat:
Field Type Null Key Default Extra
bereichid int(10) unsigned PRI auto_increment
bereichname varchar(20)
u.s.w.
Das Resultat von SHOW COLUMNS ist also eine Tabelle;
die Spaltennamen stehen im ersten Feld jeder Zeile.
Um nur gerade die Namen auszugeben, reicht also auch (ungetestet!):
while ($zeile=mysql_fetch_row($ergebnis))
{ echo $zeile[0] . "<br>\n"; }
---
Ich weiss nicht genau, was Du vorhast.
Wenn Du allerdings sowieso auch die Daten verwendest,
(und nicht nur die Spaltennamen), dann reicht meistens
eine einzige DB-Abfrage ("SELECT * FROM Tabelle"),
und mit mysql_field_name() kriegst Du die Namen der
Spalten ja auch in PHP.
HTH, Gruesse,
Thomas
Hi Thomas,
und wie es mir geholfen hat!!!!!
Vielen Dank für dein starke Hilfe!
Viele Grüße
Olly
Hello,
Wie komme ich an die Spaltennamen einer Tabelle ran??
Scahu mal in [pref:t=63837&m=362530]
Grüße
Tom