Signatur
Beschreibung
mysql_errno() liefert die interne MySQL-Fehlernummer der zuletzt auf der angegebenen Verbindung ausgeführten Datenbankoperation. Trat kein Fehler auf, wird 0 zurückgegeben. Die Funktion ist nützlich, um nach einem fehlgeschlagenen Query gezielt auf bestimmte Fehlercodes zu prüfen und entsprechend zu reagieren.
In Kombination mit mysql_error(), das die zugehörige Fehlermeldung im Klartext liefert, lässt sich eine vollständige Fehlerbehandlung implementieren. Der optionale Parameter $link_identifier gibt die Datenbankverbindung an; wird er weggelassen, verwendet PHP automatisch die zuletzt geöffnete Verbindung.
Achtung: Die gesamte mysql_*-Erweiterung wurde mit PHP 5.5.0 als veraltet (deprecated) markiert und mit PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli_errno() oder die PDO-Klasse mit PDO::errorCode() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | NULL | Eine MySQL-Verbindungsressource, wie sie von mysql_connect() zurückgegeben wird. Wird der Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. Existiert keine offene Verbindung, wird versucht, eine neue Verbindung herzustellen. |
Rückgabewert
0 zurückgegeben.Beispiele
Fehlernummer nach einem fehlgeschlagenen Query auswerten
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $link);
$result = mysql_query('SELECT * FROM nicht_existente_tabelle', $link);
if (!$result) {
$fehlerNummer = mysql_errno($link);
$fehlermeldung = mysql_error($link);
echo "MySQL-Fehler Nr. {$fehlerNummer}: {$fehlermeldung}\n";
}
mysql_close($link);
?>
Gezielt auf bestimmte Fehlercodes reagieren
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('meine_datenbank', $link);
$result = mysql_query("INSERT INTO benutzer (email) VALUES ('duplikat@example.com')", $link);
if (!$result) {
$errno = mysql_errno($link);
if ($errno === 1062) {
echo "Fehler: Diese E-Mail-Adresse ist bereits vorhanden (Duplikat).\n";
} else {
echo "Unbekannter MySQL-Fehler Nr. {$errno}: " . mysql_error($link) . "\n";
}
}
mysql_close($link);
?>
// Wichtig · Fallstricke
Deprecated seit PHP 5.5.0, entfernt in PHP 7.0.0: Die mysql_*-Erweiterung darf in modernem PHP-Code nicht mehr verwendet werden. Nutze stattdessen mysqli_errno() für prozedurale Verwendung oder $mysqli->errno objektorientiert. Für PDO steht PDO::errorCode() zur Verfügung.
Die Fehlernummer gilt immer nur für die zuletzt ausgeführte Datenbankoperation auf der betreffenden Verbindung. Nach einem weiteren (erfolgreichen) Query wird die Fehlernummer auf 0 zurückgesetzt. Es empfiehlt sich daher, mysql_errno() unmittelbar nach der zu prüfenden Operation aufzurufen.