Signatur
Beschreibung
mysql_db_query() wählt zunächst die angegebene Datenbank aus und führt dann die übergebene SQL-Abfrage auf der aktuellen MySQL-Verbindung aus. Die Funktion kombiniert damit die Aufrufe von mysql_select_db() und mysql_query() in einem einzigen Schritt.
Die Funktion gehört zur veralteten mysql_*-Erweiterung und wurde seit PHP 5.3.0 als deprecated markiert. In PHP 7.0.0 wurde sie vollständig aus PHP entfernt. Für neuen Code sollte stattdessen mysqli oder PDO verwendet werden.
Ein wesentlicher Nachteil dieser Funktion ist, dass sie die aktiv ausgewählte Datenbank der Verbindung dauerhaft ändert. Nach einem Aufruf befindet man sich also in der angegebenen Datenbank, was bei Anwendungen mit mehreren Datenbanken unerwartete Seiteneffekte verursachen kann.
- Für SELECT-Abfragen gibt die Funktion eine Ergebnis-Ressource zurück, die mit
mysql_fetch_array()o.ä. ausgewertet werden kann. - Für INSERT, UPDATE, DELETE gibt sie bei Erfolg
true, bei Fehlerfalsezurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database Pflicht | string | Name der MySQL-Datenbank, die vor Ausführung der Abfrage ausgewählt werden soll. | |
| $query Pflicht | string | Die auszuführende SQL-Abfrage. Der Query-String darf kein abschließendes Semikolon enthalten. | |
| $link_identifier | resource | null | Eine MySQL-Verbindungsressource, die zuvor mit mysql_connect() geöffnet wurde. Wird kein Bezeichner angegeben, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
false. Bei anderen Abfragetypen (INSERT, UPDATE, DELETE usw.) wird bei Erfolg true, bei Fehler false zurückgegeben.Beispiele
Einfache SELECT-Abfrage auf einer bestimmten Datenbank
<?php
// Verbindung aufbauen (veraltet, nur zu Demonstrationszwecken)
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . mysql_error());
}
// Datenbank auswählen und Abfrage ausführen
$result = mysql_db_query('meine_datenbank', 'SELECT id, name FROM benutzer LIMIT 5', $link);
if ($result === false) {
die('Abfrage fehlgeschlagen: ' . mysql_error());
}
while ($row = mysql_fetch_assoc($result)) {
echo 'ID: ' . $row['id'] . ' – Name: ' . $row['name'] . PHP_EOL;
}
mysql_free_result($result);
mysql_close($link);
?>
Moderne Entsprechung mit MySQLi (empfohlene Alternative)
<?php
// Empfohlene Alternative mit MySQLi (objektorientiert)
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'meine_datenbank');
if ($mysqli->connect_error) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
$result = $mysqli->query('SELECT id, name FROM benutzer LIMIT 5');
if ($result === false) {
die('Abfrage fehlgeschlagen: ' . $mysqli->error);
}
while ($row = $result->fetch_assoc()) {
echo 'ID: ' . $row['id'] . ' – Name: ' . $row['name'] . PHP_EOL;
}
$result->free();
$mysqli->close();
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Die alte mysql_*-Erweiterung bietet keine native Unterstützung für Prepared Statements. Werden Benutzereingaben direkt in SQL-Abfragen eingebettet, ist die Anwendung anfällig für SQL-Injection-Angriffe. Niemals unkontrollierte Eingaben direkt in einen Query-String einbauen.
Deprecation und Entfernung: Die Funktion ist seit PHP 5.3.0 offiziell als veraltet (deprecated) markiert und erzeugt entsprechende Warnungen. Ab PHP 7.0.0 wurde die gesamte mysql_*-Erweiterung entfernt und ist nicht mehr verfügbar. Bestehender Code muss auf mysqli_* oder PDO migriert werden.
Seiteneffekt: Der Aufruf von mysql_db_query() ändert die aktiv ausgewählte Datenbank der Verbindung dauerhaft. Nachfolgende Aufrufe von mysql_query() ohne explizite Datenbankauswahl operieren dann auf der zuletzt durch mysql_db_query() gesetzten Datenbank.