Signatur
Beschreibung
mysql_error() liefert die Fehlermeldung der zuletzt fehlgeschlagenen MySQL-Datenbankoperation als lesbaren String. Ist kein Fehler aufgetreten, wird ein leerer String zurückgegeben. Die Funktion ist nützlich, um nach einem fehlgeschlagenen mysql_query()- oder mysql_connect()-Aufruf den genauen Fehlergrund zu ermitteln.
Optional kann eine bestehende Verbindungsressource übergeben werden. Fehlt dieser Parameter, wird die zuletzt geöffnete MySQL-Verbindung verwendet. Die Fehlermeldung stammt direkt vom MySQL-Server und ist daher in der Sprache des Servers (üblicherweise Englisch).
Wichtiger Hinweis: Die gesamte mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet (deprecated) markiert und in PHP 7.0.0 vollständig entfernt. Für neuen Code sollten stattdessen mysqli_error() oder PDO::errorInfo() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | null | Eine MySQL-Verbindungsressource, die von mysql_connect() zurückgegeben wurde. Wird der Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. Existiert keine offene Verbindung, gibt die Funktion einen leeren String zurück. |
Rückgabewert
Beispiele
Fehlerbehandlung nach fehlgeschlagenem Query
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $link);
$result = mysql_query('SELECT * FROM nicht_vorhandene_tabelle', $link);
if (!$result) {
$fehler = mysql_error($link);
echo 'Datenbankfehler: ' . htmlspecialchars($fehler);
// Ausgabe z. B.: Datenbankfehler: Table 'meine_datenbank.nicht_vorhandene_tabelle' doesn't exist
}
mysql_close($link);
Fehlerprüfung ohne explizite Verbindungsressource
<?php
// Verbindung ohne explizites Handle
mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank');
$result = mysql_query('INSERT INTO benutzer (id) VALUES ("doppelt")');
if (!$result) {
// Ohne Ressource: letzte Verbindung wird genutzt
echo 'Fehler: ' . mysql_error();
}
// Wichtig · Fallstricke
Veraltet und entfernt: mysql_error() gehört zur mysql_*-Erweiterung, die seit PHP 5.5.0 als deprecated gilt und in PHP 7.0.0 vollständig entfernt wurde. Code, der diese Funktion verwendet, ist nicht mehr lauffähig auf PHP 7 oder neuer.
Sicherheitswarnung: Fehlermeldungen des MySQL-Servers niemals unverarbeitet direkt an den Browser ausgeben, da sie sensible Informationen (Tabellenstruktur, Datenbankname, Feldnamen) preisgeben können. Immer htmlspecialchars() verwenden und Fehlermeldungen im Produktivbetrieb nur ins Log schreiben.
Als moderne Alternativen stehen mysqli_error($link) für prozedurale Nutzung oder $mysqli->error objektorientiert sowie $pdo->errorInfo() zur Verfügung.