Start · Sprachen · PHP · Referenz · mysql_errno

mysql_errno

Funktion

Gibt die numerische Fehlernummer der zuletzt ausgeführten MySQL-Operation zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_errno(resource $link_identifier = NULL): int

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

Typ
int
Beschreibung
Gibt die numerische Fehlernummer der zuletzt ausgeführten MySQL-Operation zurück. Ist kein Fehler aufgetreten, wird 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);
?>
MySQL-Fehler Nr. 1146: Table 'meine_datenbank.nicht_existente_tabelle' doesn't exist

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);
?>
Fehler: Diese E-Mail-Adresse ist bereits vorhanden (Duplikat).

// 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.