Aktueller Standort: Startseite> Neueste Artikel> Bedeutet MySQLi :: $ errno, dass 0 zurückkehrt, alles ist normal?

Bedeutet MySQLi :: $ errno, dass 0 zurückkehrt, alles ist normal?

M66 2025-05-29

Bei Verwendung von PHP für Datenbankoperationen interagieren wir normalerweise mit der MySQL -Datenbank über die MySQLI -Erweiterung. MySQL liefert reichhaltige Funktionen, eines der häufig verwendeten Attribute ist Errno , das den Fehlercode für Datenbankoperationen darstellt. Wenn MySQLI :: $ errno 0 zurückgibt, bedeutet dies normalerweise, dass kein Fehler aufgetreten ist. Bedeutet die Rückgabe von 0 jedoch, dass es kein Problem mit der Datenbankoperation gibt? In diesem Artikel wird dieses Problem im Detail erläutert.

1. Einführung in MySQLI :: $ errno

In PHP ist MySQLI :: $ errno eine Eigenschaft des MySQLi -Objekts, der den Fehlercode der letzten Datenbankoperation zurückgibt. Speziell:

  • Wenn die Operation erfolgreich ist und keine Fehler auftreten, beträgt der Wert von ERRNO 0.

  • Wenn die Operation fehlschlägt, gibt Erno einen Fehlercode ungleich Null zurück und Sie können das Attribut von MySQLI :: $ Fehler verwenden, um detailliertere Fehlerinformationen zu erhalten.

Codebeispiel:

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT * FROM users";
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "Abfragefehler: " . $mysqli->error;
} else {
    echo "Abfrage erfolgreich!";
}
?>

Wenn die Abfrage erfolgreich ist, gibt $ mysqli-> errno 0 zurück. Wenn die Abfrage fehlschlägt, gibt $ mysqli-> errno einen Fehlercode ungleich Null zurück, und $ mysqli-> Fehler liefert spezifische Informationen zum Fehler.

2. Errno Is 0 bedeutet nicht, dass es kein Problem gibt

Während MySQLI :: $ errno 0 ist, bedeutet dies normalerweise, dass die Datenbankoperation keine Fehler gibt, aber dies bedeutet nicht, dass die Operation völlig in Ordnung ist. Hier sind einige häufige Situationen, in denen das Problem noch vorhanden ist, auch wenn Erno 0 zurückgibt.

2.1 Die Datenbankverbindung ist erfolgreich, aber es gibt ein logisches Problem mit der Abfrageanweisung

Auch wenn die Datenbankverbindung erfolgreich ist, ist die Abfrage -SQL -Anweisung möglicherweise logisch falsch. Beispielsweise existiert die Abfragetabelle nicht oder das zurückgegebene Ergebnis ist leer.

Beispiel:

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT * FROM non_existent_table";  // Fragen Sie eine Tabelle ab, die nicht existiert
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "Abfragefehler: " . $mysqli->error;
} else {
    if ($result->num_rows == 0) {
        echo "Keine Daten gefunden!";
    } else {
        echo "Abfrage erfolgreich!";
    }
}
?>

Obwohl MySQLi :: $ errno 0 zurückgibt, gibt es die Abfrageentabelle, sodass tatsächlich keine Daten gefunden werden. Obwohl es keinen Fehlercode gibt, besteht das Logikproblem immer noch.

2.2 Warninformationen wirken sich nicht auf ERRNO aus

Die MySQL -Erweiterung generiert einige Warnmeldungen, diese Warnungen werden jedoch nicht von Errno erfasst. Das heißt, selbst wenn es einige Warnungen gibt, ist er möglicherweise immer noch 0.

Wenn beispielsweise bestimmte Abfragen ausgeführt werden, kann MySQL eine Warnung anstelle eines Fehlers ausgeben. Wenn es nur eine Warnung ist, ist Erno immer noch 0, aber Sie sollten vorsichtig sein, wenn MySQL eine Warnung zurückgibt.

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT id FROM users LIMIT 10";  // Annahmen users Tabelle hat id Felder,Einige Daten fehlen jedoch
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "Abfragefehler: " . $mysqli->error;
} else {
    echo "Abfrage erfolgreich!";
    // Wenn es eine Warnung gibt,Kann bestanden werden `mysqli::$warnings` Überprüfen
    $warnings = $mysqli->warnings;
    if ($warnings) {
        echo "Warnmeldung: " . $warnings->message;
    }
}
?>

3.. Wie kann man sicherstellen, dass es keine Probleme mit dem Datenbankvorgang gibt?

Obwohl MySQLI :: $ errno 0 normalerweise zurückgibt, bedeutet dies normalerweise keine Fehler, um die Integrität des Datenbankvorgangs zu gewährleisten, können wir die folgenden Maßnahmen ergreifen:

3.1 Überprüfen Sie die Abfrageergebnisse

Auch wenn es keinen Fehlercode gibt, prüfen Sie, ob die Abfrage das erwartete Ergebnis zurückgibt. Sie können beispielsweise MySQLI :: num_rows überprüfen, um zu überprüfen, ob die Auswahl der Abfrage Daten zurückgibt.

3.2 Verwenden von MySQLI :: $ Warnings

Durch die Überprüfung des Eigentums von MySQLI :: $ Warnings können Sie potenzielle Warnmeldungen erfassen und sicherstellen, dass keine potenziellen Probleme fehlen.

3.3 Verwenden Sie die Versuchsbeherrschung mit dem Versuchs-Catch -Ausnahmebereich

Während MySQLI keine Ausnahmen selbst wirft, können Sie Ausnahmen auswerfen, indem Sie mySQLI_Report (mysqli_report_strict) einstellen, um Fehler besser zu behandeln.

Beispiel:

 <?php
mysqli_report(MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "password", "database");
    $query = "SELECT * FROM users";
    $result = $mysqli->query($query);
    
    // Prozessabfragenergebnisse
} catch (mysqli_sql_exception $e) {
    echo "Ausnahme: " . $e->getMessage();
}
?>

Auf diese Weise können Sie Ausnahmen erfassen und entsprechend verarbeiten, wenn der Datenbankvorgang ausfällt.

abschließend

MySQLI :: $ errno gibt 0 zurück, was angibt, dass es auf der Datenbankbetriebsebene keinen Fehler gibt, bedeutet jedoch nicht, dass der Datenbankvorgang völlig frei von Problemen ist. Um die Richtigkeit von Datenbankvorgängen sicherzustellen, sollten Entwickler zusätzliche Überprüfungen durchführen, einschließlich der Gültigkeit von Abfrageergebnissen, der Verarbeitung von Warninformationen und der Verwendung der Ausnahmeregelung. Nur wenn diese Faktoren auf umfassende Weise berücksichtigt werden, können die Zuverlässigkeit und Robustheit von Datenbankvorgängen sichergestellt werden.