Start · Sprachen · PHP · Referenz · mysql_list_tables

mysql_list_tables

Funktion

Listet alle Tabellen einer MySQL-Datenbank auf und gibt ein Ergebnis-Ressource-Handle zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_list_tables(string $database, resource $link_identifier = null): resource|false

Beschreibung

mysql_list_tables() sendet eine SHOW TABLES FROM database-Abfrage an den MySQL-Server und gibt eine Ergebnis-Ressource zurück, über die alle Tabellennamen der angegebenen Datenbank iteriert werden können. Die Tabellennamen werden dabei typischerweise mit mysql_tablename() oder mysql_fetch_row() aus dem Ergebnis ausgelesen.

Wichtig: Diese Funktion ist seit PHP 4.3.7 als veraltet (deprecated) markiert und wurde in PHP 7.0 vollständig entfernt. Für neuen Code sollte stattdessen mysql_query('SHOW TABLES FROM `datenbankname`') mit der mysql_*-Extension oder besser noch PDO bzw. MySQLi verwendet werden.

Die Funktion erwartet als ersten Parameter den Namen der Datenbank, deren Tabellen aufgelistet werden sollen. Optional kann ein bestehender MySQL-Verbindungs-Link übergeben werden; wird er weggelassen, verwendet PHP die zuletzt geöffnete Verbindung.

Typische Einsatzgebiete waren früher die dynamische Inspektion einer Datenbankstruktur, z. B. für Administrations-Werkzeuge oder Backup-Skripte. In modernem Code sollte diese Funktion nicht mehr eingesetzt werden.

Parameter

Name Typ Default Beschreibung
$database Pflicht string Der Name der MySQL-Datenbank, deren Tabellen aufgelistet werden sollen.
$link_identifier resource null Eine optionale MySQL-Verbindungsressource, die mit mysql_connect() erzeugt wurde. Wird sie weggelassen, wird die zuletzt geöffnete Verbindung verwendet.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine Ergebnis-Ressource zurück, die mit mysql_tablename() oder mysql_fetch_row() ausgewertet werden kann. Im Fehlerfall wird false zurückgegeben.

Beispiele

Alle Tabellen einer Datenbank auflisten

<?php
// Verbindung herstellen (veraltete mysql_*-Extension, nur für Demonstration)
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

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

$anzahl = mysql_num_rows($result);
echo "Anzahl Tabellen: $anzahl\n";

for ($i = 0; $i < $anzahl; $i++) {
    echo mysql_tablename($result, $i) . "\n";
}

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

Moderne Alternative mit MySQLi (empfohlen)

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

$result = $mysqli->query('SHOW TABLES FROM `meine_datenbank`');
while ($row = $result->fetch_row()) {
    echo $row[0] . "\n";
}

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

// Wichtig · Fallstricke

Deprecation: mysql_list_tables() ist seit PHP 4.3.7 als veraltet markiert und wurde in PHP 7.0 vollständig entfernt. Code, der diese Funktion verwendet, kann unter PHP 7+ nicht mehr ausgeführt werden und muss migriert werden.

Migration: Als direkter Ersatz kann mysql_query('SHOW TABLES FROM `datenbankname`') verwendet werden. Grundsätzlich wird jedoch empfohlen, komplett auf MySQLi oder PDO zu migrieren, da die gesamte mysql_*-Extension seit PHP 5.5 veraltet und in PHP 7.0 entfernt wurde.

Sicherheit: Der Datenbankname wird nicht automatisch escaped. Bei dynamisch zusammengesetzten Datenbanknamen muss auf korrekte Validierung geachtet werden, um SQL-Injection zu verhindern.