Signatur
Beschreibung
mysql_list_dbs() sendet eine Abfrage an den verbundenen MySQL-Server und gibt eine Liste aller Datenbanken zurück, auf die der aktuelle Benutzer Zugriff hat. Das Ergebnis wird als Resource-Handle zurückgegeben, der anschließend mit Funktionen wie mysql_fetch_row(), mysql_fetch_array() oder mysql_db_name() ausgelesen werden kann.
Die Funktion ist intern äquivalent zur SQL-Abfrage SHOW DATABASES und liefert entsprechend dieselben Ergebnisse. Sie eignet sich für administrative Skripte, die einen Überblick über die verfügbaren Schemata eines Servers benötigen.
Achtung: Die gesamte mysql_*-Erweiterung gilt seit PHP 5.5.0 als veraltet (deprecated) und wurde in PHP 7.0.0 vollständig entfernt. Für neuen Code sollte ausschließlich mysqli_* oder PDO verwendet werden. Alternativ kann direkt SHOW DATABASES als SQL-Abfrage ausgeführt werden.
- Für
mysqli: Verwendemysqli_query($link, 'SHOW DATABASES') - Für
PDO: Verwende$pdo->query('SHOW DATABASES')
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | null | Eine optionale MySQL-Verbindungs-Resource, die von mysql_connect() oder mysql_pconnect() zurückgegeben wurde. Wird kein Wert übergeben, wird die zuletzt geöffnete Verbindung verwendet. Existiert keine offene Verbindung, wird automatisch versucht, eine Verbindung herzustellen (als würde mysql_connect() ohne Argumente aufgerufen). |
Rückgabewert
mysql_fetch_row(), mysql_fetch_array() oder speziell mysql_db_name() ausgelesen werden kann. Im Fehlerfall wird false zurückgegeben.Beispiele
Alle Datenbanken eines MySQL-Servers auflisten
<?php
// Verbindung herstellen (mysql_* nur in PHP < 7.0 verfügbar!)
$link = mysql_connect('localhost', 'root', 'geheim');
if (!$link) {
die('Verbindungsfehler: ' . mysql_error());
}
$db_list = mysql_list_dbs($link);
if ($db_list === false) {
die('Fehler beim Abrufen der Datenbanken: ' . mysql_error());
}
echo "Verfügbare Datenbanken:" . PHP_EOL;
while ($row = mysql_fetch_object($db_list)) {
echo ' - ' . $row->Database . PHP_EOL;
}
mysql_free_result($db_list);
mysql_close($link);
?>
Moderner Ersatz mit mysqli (empfohlen)
<?php
// Empfohlene Alternative mit mysqli statt mysql_list_dbs()
$link = new mysqli('localhost', 'root', 'geheim');
if ($link->connect_error) {
die('Verbindungsfehler: ' . $link->connect_error);
}
$result = $link->query('SHOW DATABASES');
if ($result === false) {
die('Fehler: ' . $link->error);
}
echo "Verfügbare Datenbanken:" . PHP_EOL;
while ($row = $result->fetch_row()) {
echo ' - ' . $row[0] . PHP_EOL;
}
$result->free();
$link->close();
?>
// Wichtig · Fallstricke
Deprecation/Entfernung: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert und in PHP 7.0.0 vollständig entfernt. Jeglicher Code, der diese Funktion verwendet, ist nicht mehr lauffähig unter PHP 7 oder höher. Ein sofortiger Wechsel auf mysqli_* oder PDO ist dringend empfohlen.
Sicherheit: Das Auflisten aller Datenbanken eines Servers sollte nur administrativen Benutzern vorbehalten sein. Stellen Sie sicher, dass der verwendete MySQL-Benutzer nur die minimal notwendigen Rechte besitzt (Principle of Least Privilege). Das Ergebnis dieser Funktion sollte nie ungefiltert an den Browser ausgegeben werden, da Datenbanknamen vertraulich sein können.
Hinweis: Das zurückgegebene Resource-Handle sollte nach Verwendung mit mysql_free_result() freigegeben werden, um Speicher freizugeben.