Signatur
Beschreibung
mysql_list_fields() liefert eine Ergebnis-Ressource, die Metainformationen über alle Spalten einer bestimmten MySQL-Tabelle enthält. Mit den zurückgegebenen Ressource-Daten kann anschließend z. B. mysql_field_name(), mysql_field_type() oder mysql_field_len() aufgerufen werden, um Spaltenname, Datentyp und Länge jedes Feldes zu ermitteln.
Die Funktion eignet sich für dynamische Anwendungen, die zur Laufzeit die Tabellenstruktur ermitteln müssen, etwa zum automatischen Generieren von Formularen oder zur Schemaanalyse. Als Alternative kann auch SHOW COLUMNS FROM tabelle per mysql_query() ausgeführt werden, was mehr Flexibilität bietet.
Wichtiger Hinweis: Die gesamte mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert und in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollten ausschließlich mysqli_*-Funktionen oder die PDO-Erweiterung verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database_name Pflicht | string | Name der MySQL-Datenbank, in der sich die Tabelle befindet. | |
| $table_name Pflicht | string | Name der Tabelle, deren Felder aufgelistet werden sollen. | |
| $link_identifier | resource | null | Optionale MySQL-Verbindungsressource. Wird sie weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
false zurückgegeben.Beispiele
Spaltennamen und Typen einer Tabelle ausgeben
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort')
or die('Verbindung fehlgeschlagen: ' . mysql_error());
$result = mysql_list_fields('meine_datenbank', 'benutzer', $link);
if ($result === false) {
die('Fehler: ' . mysql_error());
}
$anzahl = mysql_num_fields($result);
for ($i = 0; $i < $anzahl; $i++) {
$name = mysql_field_name($result, $i);
$typ = mysql_field_type($result, $i);
$laenge = mysql_field_len($result, $i);
echo "Feld: {$name} | Typ: {$typ} | Länge: {$laenge}\n";
}
mysql_free_result($result);
mysql_close($link);
?>
Moderne Alternative mit mysqli und SHOW COLUMNS
<?php
// Empfohlene Alternative mit mysqli statt der veralteten mysql_*-Funktionen
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'meine_datenbank');
if ($mysqli->connect_error) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
$result = $mysqli->query('SHOW COLUMNS FROM benutzer');
while ($row = $result->fetch_assoc()) {
echo "Feld: {$row['Field']} | Typ: {$row['Type']} | Null: {$row['Null']}\n";
}
$result->free();
$mysqli->close();
?>
// Wichtig · Fallstricke
Deprecation / Entfernung: mysql_list_fields() wurde zusammen mit der gesamten mysql_*-Erweiterung in PHP 5.5.0 als veraltet (deprecated) markiert, erzeugt ab diesem Zeitpunkt eine E_DEPRECATED-Warnung und wurde in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion enthält, ist auf PHP 7+ nicht mehr lauffähig.
Für neue oder migrierte Projekte sollte stattdessen mysqli_query() mit SHOW COLUMNS FROM tabellenname oder das PDO-Statement DESCRIBE tabellenname verwendet werden.
Sicherheit: Die Parameter database_name und table_name sollten niemals direkt aus Nutzereingaben übernommen werden, da keine vorbereiteten Anweisungen (Prepared Statements) für diese Funktion existieren. Eingaben sind stets zu validieren, etwa durch einen Abgleich mit einer Whitelist erlaubter Tabellennamen.