Signatur
Beschreibung
mysql_field_name() ermittelt den Spaltennamen eines bestimmten Feldes innerhalb eines MySQL-Ergebnisses, das zuvor mit mysql_query() erzeugt wurde. Der gesuchte Feldname wird über seinen nullbasierten Index ($field_offset) referenziert.
Diese Funktion ist nützlich, wenn man die Spaltennamen eines Abfrageergebnisses dynamisch auslesen möchte, beispielsweise um allgemeine Tabellen-Render-Funktionen zu schreiben, die unabhängig vom konkreten Tabellenaufbau funktionieren.
Wichtig: Die gesamte mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet (deprecated) markiert und in PHP 7.0.0 vollständig entfernt. Für neuen Code sollte stattdessen mysqli oder PDO verwendet werden. Mit mysqli_fetch_field_direct() steht eine direkte funktionale Entsprechung bereit.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Das MySQL-Ergebnis-Resource-Handle, das von mysql_query() zurückgegeben wurde. |
|
| $field_offset Pflicht | int | Der nullbasierte Index des Feldes, dessen Name abgerufen werden soll. Der erste Feldindex ist 0. |
Rückgabewert
false zurückgegeben.Beispiele
Spaltennamen einer Tabelle dynamisch auslesen
<?php
$conn = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $conn);
$result = mysql_query('SELECT id, name, email FROM benutzer LIMIT 1', $conn);
$anzahlFelder = mysql_num_fields($result);
echo "Spaltennamen:" . PHP_EOL;
for ($i = 0; $i < $anzahlFelder; $i++) {
echo $i . ': ' . mysql_field_name($result, $i) . PHP_EOL;
}
mysql_free_result($result);
mysql_close($conn);
?>
Tabelle dynamisch als HTML rendern
<?php
$conn = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $conn);
$result = mysql_query('SELECT * FROM produkte', $conn);
$anzahlFelder = mysql_num_fields($result);
echo '<table border="1">' . PHP_EOL;
// Kopfzeile mit Spaltennamen
echo '<tr>';
for ($i = 0; $i < $anzahlFelder; $i++) {
echo '<th>' . htmlspecialchars(mysql_field_name($result, $i)) . '</th>';
}
echo '</tr>' . PHP_EOL;
// Datensätze ausgeben
while ($row = mysql_fetch_row($result)) {
echo '<tr>';
foreach ($row as $wert) {
echo '<td>' . htmlspecialchars($wert) . '</td>';
}
echo '</tr>' . PHP_EOL;
}
echo '</table>';
mysql_free_result($result);
mysql_close($conn);
?>
// Wichtig · Fallstricke
Deprecation-Warnung: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert und in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion verwendet, ist auf modernen PHP-Versionen nicht lauffähig.
Als Ersatz empfiehlt sich mysqli_fetch_field_direct($result, $field_offset)->name (prozedurale MySQLi-API) oder das Auslesen der Metadaten via PDOStatement::getColumnMeta().
Bei Verwendung von Aliasnamen (SELECT name AS benutzername) gibt die Funktion den Aliasnamen zurück, nicht den ursprünglichen Spaltennamen.