Start · Sprachen · PHP · Referenz · mysql_tablename

mysql_tablename

Funktion

Liefert den Namen einer Tabelle aus einem Ergebnis-Ressource-Objekt, das durch <code>mysql_list_tables()</code> erzeugt wurde.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_tablename(resource $result, int $i): string|false

Beschreibung

mysql_tablename() liest den Namen einer Tabelle aus einem Ergebnis-Datensatz, der zuvor mit mysql_list_tables() abgerufen wurde. Der Parameter $i gibt den nullbasierten Index der gewünschten Zeile im Ergebnis an.

Die Funktion ist ein bequemer Kurzweg zu mysql_result() mit festem Feldnamen und wurde häufig in älteren PHP-4/5-Projekten eingesetzt, um alle Tabellen einer Datenbank zu iterieren.

Wichtig: Sowohl mysql_tablename() als auch die gesamte mysql_*-Erweiterung sind seit PHP 5.5.0 als veraltet markiert und wurden in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollten ausschließlich mysqli_*-Funktionen oder PDO verwendet werden.

Eine modernere Alternative, um Tabellennamen abzurufen, ist z. B. die SQL-Abfrage SHOW TABLES über MySQLi oder PDO.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige Ergebnis-Ressource, wie sie von mysql_list_tables() zurückgegeben wird.
$i Pflicht int Nullbasierter Index der Zeile im Ergebnis, deren Tabellenname abgerufen werden soll.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Namen der Tabelle als string zurück. Im Fehlerfall oder wenn der Index außerhalb des gültigen Bereichs liegt, wird false zurückgegeben.

Beispiele

Alle Tabellen einer Datenbank auflisten

<?php
// Verbindung herstellen (veraltete mysql_*-API, nur zu Demonstrationszwecken)
$link = mysql_connect('localhost', 'root', 'geheim');
if (!$link) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

// Tabellenliste abrufen
$result = mysql_list_tables('meine_datenbank', $link);
if (!$result) {
    die('Fehler: ' . mysql_error());
}

$anzahl = mysql_num_rows($result);
echo 'Anzahl Tabellen: ' . $anzahl . PHP_EOL;

for ($i = 0; $i < $anzahl; $i++) {
    echo 'Tabelle ' . $i . ': ' . mysql_tablename($result, $i) . PHP_EOL;
}

mysql_free_result($result);
mysql_close($link);
?>
Anzahl Tabellen: 3 Tabelle 0: benutzer Tabelle 1: bestellungen Tabelle 2: produkte

Moderne Alternative mit MySQLi (empfohlen)

<?php
// Empfohlene Alternative mit MySQLi
$mysqli = new mysqli('localhost', 'root', 'geheim', 'meine_datenbank');
if ($mysqli->connect_error) {
    die('Verbindung fehlgeschlagen: ' . $mysqli->connect_error);
}

$result = $mysqli->query('SHOW TABLES');
if (!$result) {
    die('Fehler: ' . $mysqli->error);
}

while ($zeile = $result->fetch_row()) {
    echo 'Tabelle: ' . $zeile[0] . PHP_EOL;
}

$result->free();
$mysqli->close();
?>
Tabelle: benutzer Tabelle: bestellungen Tabelle: produkte

// Wichtig · Fallstricke

Deprecation / Entfernung: Die mysql_*-Erweiterung (inkl. mysql_tablename()) wurde in PHP 5.5.0 als veraltet (deprecated) eingestuft und in PHP 7.0.0 vollständig entfernt. Sie steht in modernen PHP-Versionen nicht mehr zur Verfügung. Jeglicher Code, der diese Funktion verwendet, muss auf mysqli_* oder PDO migriert werden.

mysql_tablename() ist intern äquivalent zu mysql_result($result, $i, 0) und liefert dasselbe Ergebnis. Es handelt sich also lediglich um eine semantische Abkürzung.