Start · Sprachen · PHP · Referenz · mysql_list_fields

mysql_list_fields

Funktion

Ruft Informationen über die Felder (Spalten) einer MySQL-Tabelle ab und gibt eine Ergebnis-Ressource zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_list_fields(string $database_name, string $table_name, resource $link_identifier = null): resource|false

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

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine MySQL-Ergebnis-Ressource zurück, die mit den Feldinformations-Funktionen ausgewertet werden kann. Bei einem Fehler (z. B. unbekannte Datenbank oder Tabelle) wird 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);
?>
Feld: id | Typ: int | Länge: 11 Feld: name | Typ: string | Länge: 255 Feld: email | Typ: string | Länge: 255

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();
?>
Feld: id | Typ: int(11) | Null: NO Feld: name | Typ: varchar(255) | Null: YES Feld: email | Typ: varchar(255) | Null: YES

// 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.