Start · Sprachen · PHP · Referenz · mysql_drop_db

mysql_drop_db

Funktion

Löscht eine MySQL-Datenbank vollständig vom Server (veraltet seit PHP 5.0, entfernt in PHP 7.0).

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_drop_db(string $database_name, resource $link_identifier = null): bool

Beschreibung

mysql_drop_db() sendet den SQL-Befehl DROP DATABASE an den MySQL-Server und löscht damit die angegebene Datenbank samt aller enthaltenen Tabellen und Daten unwiderruflich. Die Funktion gehört zur alten ext/mysql-Erweiterung, die in PHP 5.5 als veraltet markiert und in PHP 7.0 vollständig entfernt wurde.

Für neue Projekte sollte ausschließlich mysqli oder PDO verwendet werden. Das funktionale Äquivalent lautet dort mysqli_query($link, 'DROP DATABASE dbname') bzw. $pdo->exec('DROP DATABASE dbname').

Die Funktion erwartet optional eine bestehende MySQL-Verbindungs-Ressource. Wird keine übergeben, verwendet sie die zuletzt mit mysql_connect() hergestellte Verbindung. Der ausführende Datenbankbenutzer benötigt das Privileg DROP.

Achtung: Das Löschen einer Datenbank ist nicht rückgängig zu machen. Alle Tabellen, Indizes, Views und gespeicherten Routinen in der Datenbank werden dauerhaft gelöscht. Vor dem Aufruf sollten stets Backups angelegt werden.

Parameter

Name Typ Default Beschreibung
$database_name Pflicht string Name der zu löschenden Datenbank. Der Name wird direkt an den MySQL-Server übertragen — niemals Benutzereingaben ungeprüft übergeben.
$link_identifier resource null Eine aktive MySQL-Verbindungs-Ressource, die mit mysql_connect() erzeugt wurde. Wird der Parameter weggelassen, verwendet PHP die zuletzt geöffnete Verbindung. Existiert keine, wird versucht, eine Verbindung mit den Standardparametern herzustellen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Datenbank erfolgreich gelöscht wurde, andernfalls false. Im Fehlerfall kann mysql_error() die Fehlermeldung des MySQL-Servers liefern.

Beispiele

Datenbank löschen mit Fehlerbehandlung (PHP 5, historisch)

<?php
// Verbindung herstellen
$link = mysql_connect('localhost', 'root', 'geheim');
if (!$link) {
    die('Verbindungsfehler: ' . mysql_error());
}

$dbName = 'test_datenbank';

if (mysql_drop_db($dbName, $link)) {
    echo "Datenbank '{$dbName}' wurde erfolgreich gelöscht.";
} else {
    echo "Fehler beim Löschen: " . mysql_error($link);
}

mysql_close($link);
?>
Datenbank 'test_datenbank' wurde erfolgreich gelöscht.

Modernes Äquivalent mit mysqli (empfohlen)

<?php
// Empfohlene Alternative: mysqli verwenden
$mysqli = new mysqli('localhost', 'root', 'geheim');

if ($mysqli->connect_errno) {
    die('Verbindungsfehler: ' . $mysqli->connect_error);
}

$dbName = 'test_datenbank';

// Datenbankname in Backticks einschließen, um reservierte Wörter zu vermeiden
// NIEMALS direkt Benutzereingaben einsetzen!
if ($mysqli->query('DROP DATABASE `' . $mysqli->real_escape_string($dbName) . '`')) {
    echo "Datenbank '{$dbName}' wurde erfolgreich gelöscht.";
} else {
    echo "Fehler: " . $mysqli->error;
}

$mysqli->close();
?>
Datenbank 'test_datenbank' wurde erfolgreich gelöscht.

// Wichtig · Fallstricke

Deprecation und Entfernung: mysql_drop_db() wurde in PHP 5.5.0 als veraltet markiert (deprecated) und in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion verwendet, ist auf PHP 7+ nicht lauffähig. Eine Migration auf mysqli oder PDO ist zwingend erforderlich.

Sicherheitswarnung: Datenbanknamen dürfen niemals aus unkontrollierten Benutzereingaben stammen, da mysql_drop_db() keine parametrisierten Abfragen unterstützt. Auch mit mysql_real_escape_string() ist bei Datenbanknamen Vorsicht geboten — eine Whitelist gültiger Namen ist die sicherste Variante.

Alternativer SQL-Befehl: In älteren Projekten wurde gelegentlich mysql_query('DROP DATABASE dbname') als Workaround verwendet, falls mysql_drop_db() nicht verfügbar oder deaktiviert war — beide Ansätze sind heute obsolet.