Signatur
Beschreibung
mysql_field_table() ermittelt den Tabellennamen, aus dem ein Feld in einem MySQL-Abfrageergebnis stammt. Dies ist besonders nützlich bei JOIN-Abfragen, bei denen Felder aus mehreren Tabellen kombiniert werden und man den Ursprung eines bestimmten Feldes identifizieren möchte.
Der Parameter field_offset ist nullbasiert, d. h. das erste Feld hat den Offset 0, das zweite 1 usw. Die Funktion gibt den Tabellennamen als Zeichenkette zurück oder false bei einem Fehler.
Wichtig: Die gesamte mysql_*-Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli oder PDO verwendet werden. Bestehender Code sollte entsprechend migriert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Das MySQL-Ergebnis-Ressource-Handle, das von mysql_query() zurückgegeben wurde. |
|
| $field_offset Pflicht | int | Der nullbasierte numerische Offset des Feldes im Ergebnis-Set. 0 bezeichnet das erste Feld. |
Rückgabewert
false zurückgegeben.Beispiele
Tabellenname eines Feldes aus einer einfachen Abfrage ermitteln
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $link);
$result = mysql_query('SELECT id, name FROM kunden', $link);
// Tabellenname für das erste Feld (Offset 0) ermitteln
$tabelle = mysql_field_table($result, 0);
echo 'Feld 0 stammt aus Tabelle: ' . $tabelle . PHP_EOL;
// Tabellenname für das zweite Feld (Offset 1) ermitteln
$tabelle = mysql_field_table($result, 1);
echo 'Feld 1 stammt aus Tabelle: ' . $tabelle . PHP_EOL;
mysql_free_result($result);
mysql_close($link);
?>
Tabellenherkunft bei JOIN-Abfragen erkennen
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $link);
$sql = 'SELECT k.id, k.name, b.betrag
FROM kunden k
JOIN bestellungen b ON k.id = b.kunden_id
LIMIT 1';
$result = mysql_query($sql, $link);
$anzahl = mysql_num_fields($result);
for ($i = 0; $i < $anzahl; $i++) {
$feldname = mysql_field_name($result, $i);
$tabelname = mysql_field_table($result, $i);
echo "Feld '{$feldname}' kommt aus Tabelle '{$tabelname}'" . PHP_EOL;
}
mysql_free_result($result);
mysql_close($link);
?>
// Wichtig · Fallstricke
Veraltet und entfernt: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als deprecated markiert, in PHP 5.6.0 erzeugt sie E_DEPRECATED-Warnungen und ist seit PHP 7.0.0 vollständig entfernt. Code, der diese Funktion verwendet, wird auf PHP 7+ einen fatalen Fehler erzeugen.
Als moderne Alternativen stehen mysqli_fetch_field() (gibt ein Objekt mit der Eigenschaft table zurück) oder das PDO-Statement-Attribut PDOStatement::getColumnMeta() zur Verfügung.
Bei Aliasnamen in SQL-Abfragen (z. B. SELECT k.name AS kundenname) gibt mysql_field_table() weiterhin den echten Tabellennamen zurück, nicht den Alias-Namen des Feldes.