Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie $ errno, um den Fehlerpunkt während der Transaktionsverarbeitung zu bestimmen

So verwenden Sie $ errno, um den Fehlerpunkt während der Transaktionsverarbeitung zu bestimmen

M66 2025-05-29

Bei der PHP -Programmierung ist es bei Verwendung von MySQLI zur Durchführung von Datenbanktransaktionen in der Regel erforderlich, um sicherzustellen, dass jeder Betrieb in der Transaktion reibungslos abgeschlossen wird. Wenn einer dieser Schritte fehlschlägt, sollten wir in der Lage sein, genau zu bestimmen, welcher Link falsch ist. Die MySQLI :: $ errno -Eigenschaft kann uns helfen, die Ursache für das Transaktionsfehler zu diagnostizieren. In diesem Artikel wird detailliert erklärt, wie er feststellt, welcher Schritt in einer Datenbank -Transaktion über MySQLI :: $ errno fehlgeschlagen ist.

Was ist MySQLI :: $ errno ?

In MySQLI ist MySQLI :: $ errno eine Eigenschaft, die den Fehlercode für die neueste Operation darstellt. Durch diese Eigenschaft kann der falsche numerische Code erhalten werden, um festzustellen, ob der Vorgang erfolgreich oder fehlgeschlagen ist. Wenn die Operation fehlschlägt, gibt Erno den entsprechenden Fehlercode zurück, und wenn er erfolgreich ist, gibt es 0 zurück.

Wie benutze ich MySQLI :: $ errno, um die Schritte zu bestimmen, die bei Transaktionen fehlschlagen sollen?

  1. Starten Sie eine Transaktion

    Bevor wir mit einer Transaktion beginnen, müssen wir MySQLI :: begin_transaction () aufrufen, um eine Transaktion zu starten.

     $mysqli = new mysqli("localhost", "user", "password", "database");
    
    if ($mysqli->connect_error) {
        die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
    }
    
    // Starten Sie eine Transaktion
    $mysqli->begin_transaction();
    
  2. Führen Sie SQL -Operationen in Transaktionen durch

    In einer Transaktion können wir mehrere SQL -Abfragen ausführen. Wir überprüfen den Fehlercode jeder Abfrage, um festzustellen, ob die Schritte fehlgeschlagen sind.

     // Führen Sie den ersten aus SQL Abfrage
    $result1 = $mysqli->query("UPDATE users SET balance = balance - 100 WHERE id = 1");
    
    // 检查第一个Abfrage是否成功
    if ($mysqli->errno) {
        echo "Fehler:Abfrage 1 scheitern,Fehler代码:" . $mysqli->errno;
        $mysqli->rollback(); // Rollen Sie Transaktionen zurück
        exit();
    }
    
    // Die zweite ausführen SQL Abfrage
    $result2 = $mysqli->query("UPDATE users SET balance = balance + 100 WHERE id = 2");
    
    // 检查第二个Abfrage是否成功
    if ($mysqli->errno) {
        echo "Fehler:Abfrage 2 scheitern,Fehler代码:" . $mysqli->errno;
        $mysqli->rollback(); // Rollen Sie Transaktionen zurück
        exit();
    }
    
    // 如果所有Abfrage都成功,Transaktionen einreichen
    $mysqli->commit();
    

    In diesem Beispiel führen wir zwei Aktualisierungen durch: Der erste reduziert den Restbetrag von Benutzer 1 um 100 und der zweite erhöht den Restbetrag von Benutzer 2 um 100. Wenn eine Abfrage fehlschlägt, geben wir den Fehlercode aus, indem wir MySQLI :: $ errno überprüfen und die Transaktion zurückrollen.

  3. Überprüfen Sie über MySQLI :: $ errno auf Fehler

    Der Wert von MySQLI :: $ errno wird nach der Durchführung jeder SQL -Operation aktualisiert. Wenn eine Operation fehlschlägt, gibt MySQLI :: $ errno den entsprechenden Fehlercode zurück und wir können diese Fehlercodes verwenden, um das Problem zu bestimmen. Wenn Sie beispielsweise eine Aktualisierungsoperation ausführen, kann der folgende Fehlercode angezeigt werden:

    • 1062 : Zeigt einen doppelten Schlüsselfehler an.

    • 1451 : Zeigt einen Fremdschlüsselbeschränkungsfehler an.

    Im obigen Code überprüfen wir, ob ($ mysqli-> errno), ob Erno einen Wert hat. In diesem Fall bedeutet dies, dass die Abfrage fehlgeschlagen ist, und wir können das Problem basierend auf dem von MySQLI :: $ Errno bereitgestellten Fehlercode weiter analysieren.

  4. Fehler beim Umgang mit Transaktionen

    Wenn ein Betrieb in der Transaktion fehlschlägt, müssen wir die gesamte Transaktion zurückrollen. Verwenden Sie MySQLi :: Rollback () , um alle ausgeführten SQL -Operationen rückgängig zu machen, um sicherzustellen, dass die Datenbank konsistent ist. Im obigen Code -Beispiel rufen wir Rollback () auf, wenn jede Abfrage fehlschlägt, und stoppen dann die Ausführung des Skripts durch exit () .

    Nach Ablauf der Transaktion verwenden wir, wenn es keinen Fehler gibt, MySQLI :: Commit (), um die Transaktion zu begehen, um sicherzustellen, dass alle Änderungen in der Datenbank gespeichert werden.

Zusammenfassen

Durch MySQLI :: $ errno können wir genau bestimmen, welcher Vorgang in einer Datenbank -Transaktion fehlgeschlagen ist. Dieser Ansatz ist sehr effektiv für das Debuggen und Fehlerbehebung und kann uns helfen, Probleme zu lokalisieren und geeignete Maßnahmen in komplexen Transaktionen zu ergreifen. Denken Sie daran, wenn bei der Transaktionsverarbeitung ein Fehler auftritt, sollte die Transaktion sofort zurückgerollt werden, um Datenkonsistenzen zu vermeiden.

Ich hoffe, dieser Artikel hilft Ihnen, besser zu verstehen, wie Sie MySQLI :: $ errno in PHP verwenden, um Fehlerschritte in Transaktionen zu bestimmen. Wenn Sie Probleme in Ihrer tatsächlichen Anwendung stoßen, können Sie das Problem weiter analysieren und beheben, indem Sie die MySQL -Fehlercode -Tabelle nachschlagen.