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