Signatur
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
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);
?>
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();
?>
// 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.