Start · Sprachen · PHP · Referenz · mysql_field_name

mysql_field_name

Funktion

Gibt den Namen des Feldes am angegebenen Index aus einem MySQL-Abfrageergebnis zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_field_name(resource $result, int $field_offset): string|false

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

Typ
string|false
Beschreibung
Gibt den Namen des Feldes als Zeichenkette zurück. Bei einem Fehler (z. B. ungültiger Index) wird 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);
?>
Spaltennamen: 0: id 1: name 2: email

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.