Start · Sprachen · PHP · Referenz · mysql_list_dbs

mysql_list_dbs

Funktion

Listet alle verfügbaren Datenbanken (Schemata) auf einem MySQL-Server auf und gibt ein Ergebnis-Resource-Handle zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_list_dbs(resource $link_identifier = null): resource|false

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: Verwende mysqli_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

Typ
resource|false
Beschreibung
Gibt bei Erfolg ein MySQL-Ergebnis-Resource-Handle zurück, das mit 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);
?>
Verfügbare Datenbanken: - information_schema - mysql - meine_applikation - test

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();
?>
Verfügbare Datenbanken: - information_schema - mysql - meine_applikation - test

// 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.