Signatur
Beschreibung
mysql_select_db() wählt die Datenbank aus, die für alle nachfolgenden Abfragen über die angegebene Verbindung genutzt wird. Sie entspricht dem SQL-Befehl USE datenbankname;. Nach dem Aufruf beziehen sich alle folgenden mysql_query()-Aufrufe auf diese Datenbank.
Wird der Parameter $link_identifier weggelassen, wird die zuletzt mit mysql_connect() oder mysql_pconnect() geöffnete Verbindung verwendet. Existiert noch keine offene Verbindung, wird automatisch eine ohne Parameter versucht – analog zu einem Aufruf von mysql_connect() ohne Argumente.
Achtung: Die gesamte mysql_*-Erweiterung wurde mit PHP 5.5.0 als deprecated markiert und mit PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli_select_db() oder PDO mit dem MySQL-Treiber verwendet werden.
Ein typischer Anwendungsfall ist der Wechsel zwischen mehreren Datenbanken innerhalb einer Verbindung, ohne die Verbindung selbst neu aufzubauen. Dennoch ist es in modernen Anwendungen üblicher, die Datenbank direkt beim Verbindungsaufbau anzugeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database_name Pflicht | string | Name der auszuwählenden MySQL-Datenbank. | |
| $link_identifier | resource | null | Eine MySQL-Verbindungsressource, die mit mysql_connect() oder mysql_pconnect() erzeugt wurde. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
true zurück, wenn die Datenbank erfolgreich ausgewählt wurde, andernfalls false. Im Fehlerfall kann mysql_error() die Fehlermeldung liefern.Beispiele
Datenbank nach Verbindungsaufbau auswählen
<?php
// Verbindung herstellen
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . mysql_error());
}
// Datenbank auswählen
if (!mysql_select_db('meine_datenbank', $link)) {
die('Datenbank konnte nicht ausgewählt werden: ' . mysql_error());
}
// Abfrage ausführen
$result = mysql_query('SELECT * FROM benutzer');
while ($row = mysql_fetch_assoc($result)) {
echo $row['name'] . PHP_EOL;
}
mysql_close($link);
?>
Zwischen zwei Datenbanken wechseln
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
// Erste Datenbank
mysql_select_db('shop', $link);
$result1 = mysql_query('SELECT COUNT(*) AS anzahl FROM produkte');
$row1 = mysql_fetch_assoc($result1);
echo 'Produkte: ' . $row1['anzahl'] . PHP_EOL;
// Zur zweiten Datenbank wechseln
mysql_select_db('archiv', $link);
$result2 = mysql_query('SELECT COUNT(*) AS anzahl FROM alte_produkte');
$row2 = mysql_fetch_assoc($result2);
echo 'Archivierte Produkte: ' . $row2['anzahl'] . PHP_EOL;
mysql_close($link);
?>
// Wichtig · Fallstricke
Deprecation & Entfernung: Die mysql_*-Erweiterung ist seit PHP 5.5.0 offiziell veraltet (deprecated) und wurde in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion verwendet, läuft auf PHP 7+ nicht mehr. Bitte migrieren Sie zu mysqli_select_db() oder nutzen Sie PDO.
Sicherheit: Der Datenbankname $database_name sollte niemals direkt aus Benutzereingaben übernommen werden, da dies einem Angreifer ermöglicht, auf beliebige Datenbanken des MySQL-Servers zuzugreifen, sofern der Datenbankbenutzer entsprechende Rechte besitzt.
Fehlerbehandlung: Bei einem Rückgabewert von false liefert mysql_error() die genaue Fehlermeldung des MySQL-Servers, z. B. wenn die Datenbank nicht existiert oder der Benutzer keine Berechtigung hat.