Aktueller Standort: Startseite> Neueste Artikel> Wie kombinieren Sie MySQLI :: $ Errno und Transaktionsmeldung, um fehlgeschlagene Schritte zu verfolgen?

Wie kombinieren Sie MySQLI :: $ Errno und Transaktionsmeldung, um fehlgeschlagene Schritte zu verfolgen?

M66 2025-07-25

Bei der Durchführung von Datenbankvorgängen begegnen wir häufig Transaktionsfehler, was möglicherweise weil einige Abfragen falsch sind oder einige Vorgänge aufgrund externer Faktoren nicht ausgeführt werden können. Zu diesem Zeitpunkt ist es besonders wichtig, fehlgeschlagene Schritte zu verfolgen und detaillierte Fehlerinformationen rechtzeitig zu erhalten. Die MySQLI -Erweiterung bietet uns $ Errno und $ Fehlereigenschaften, die uns helfen können, Fehlercodes und detaillierte Fehlerbeschreibungen zu erhalten. In Kombination mit der Transaktionsprotokollierung können wir die spezifischen Fehlerschritte weiter verfolgen.

In diesem Artikel wird ausführlich eingeführt, wie Sie die Schritte des Datenbankbetriebsausfalls in Kombination mit MySQLI :: $ Errno und Transaktionsprotokollierung verfolgen.

1. Die Rolle von MySQLI :: $ errno

In PHP enthält die MySQLI -Erweiterung die $ errno -Eigenschaft, die den in der letzten Datenbankoperation aufgetretenen Fehlercode darstellt. Wenn eine Datenbankabfrage oder eine andere Operation fehlschlägt, wird $ errno auf den entsprechenden Fehlercode festgelegt. Sie können diesen Wert überprüfen, um festzustellen, ob ein Fehler aufgetreten ist, und detaillierte Fehlerinformationen weiter abrufen.

 if ($mysqli->errno) {
    echo "Fehlercode: " . $mysqli->errno . "<br>";
    echo "Fehlermeldung: " . $mysqli->error . "<br>";
}

Wenn ein Fehler auftritt, können wir über den obigen Code den spezifischen Fehlercode und die Fehlerbeschreibung abrufen.

2. Verwenden Sie Transaktionen

Bei der Durchführung von Datenbankvorgängen mit mehrstufigen Datenbanken verwenden wir normalerweise Transaktionen, um die Atomizität der Operationen zu gewährleisten. Wenn wir Transaktionen ausführen, müssen alle Abfragen erfolgreich ausgeführt werden, andernfalls wird die Transaktion zurückgerollt, um die Konsistenz des Datenbankzustands zu gewährleisten. Wenn eine Transaktion verwendet wird, können wir bei einem bestimmten Schritt die Ursache für den Fehler durch MySQLI :: $ errno erfassen und das Protokoll für eine leichtere Nachverfolgung und Fehlerbehebung aufzeichnen.

 $mysqli->begin_transaction();

try {
    // Schritt 1
    $mysqli->query("UPDATE users SET balance = balance - 100 WHERE user_id = 1");
    
    if ($mysqli->errno) {
        throw new Exception("Schritt 1 scheitern,Fehlercode:" . $mysqli->errno . " Fehlermeldung:" . $mysqli->error);
    }

    // Schritt 2
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE account_id = 2");
    
    if ($mysqli->errno) {
        throw new Exception("Schritt 2 scheitern,Fehlercode:" . $mysqli->errno . " Fehlermeldung:" . $mysqli->error);
    }

    // Transaktionen einreichen
    $mysqli->commit();
} catch (Exception $e) {
    // Transaktionsrollback
    $mysqli->rollback();
    // Protokoll -Fehlerprotokoll
    error_log("事务scheitern: " . $e->getMessage());
}

Im obigen Code verwenden wir begin_transaction () , um eine Transaktion zu starten und zu überprüfen, ob nach jedem Schritt ein Fehler aufgetreten ist. Wenn ein Schritt fehlschlägt, geben Sie eine Ausnahme und führen Sie einen Transaktionsrollback durch, um sicherzustellen, dass der Datenbankvorgang nicht teilweise erfolgreich ist und die Konsistenz beibehält. Gleichzeitig werden im Protokoll auch Fehlermeldungen aufgezeichnet, um die anschließende Fehlerbehebung zu vereinfachen.

3.. In Kombination mit Transaktionsprotokollierung

Um fehlgeschlagene Schritte besser zu verfolgen, können wir die Protokollierungsfunktion kombinieren, um die Ergebnisse jedes Betriebsschritts und die in der Protokolldatei auftretenden Fehler aufzuzeichnen. Die Protokolldatei kann detaillierte Fehlerinformationen speichern, einschließlich fehlgeschlagener SQL -Anweisungen, Fehlercodes, Fehlerbeschreibungen, Fehlerzeiten usw.

 function log_error($message) {
    $logfile = '/path/to/your/logfile.log';
    $timestamp = date('Y-m-d H:i:s');
    $log_message = "$timestamp - $message\n";
    file_put_contents($logfile, $log_message, FILE_APPEND);
}

$mysqli->begin_transaction();

try {
    // Schritt 1
    $mysqli->query("UPDATE users SET balance = balance - 100 WHERE user_id = 1");
    
    if ($mysqli->errno) {
        log_error("Schritt 1 scheitern,Fehlercode:" . $mysqli->errno . " Fehlermeldung:" . $mysqli->error);
        throw new Exception("Schritt 1 scheitern");
    }

    // Schritt 2
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE account_id = 2");
    
    if ($mysqli->errno) {
        log_error("Schritt 2 scheitern,Fehlercode:" . $mysqli->errno . " Fehlermeldung:" . $mysqli->error);
        throw new Exception("Schritt 2 scheitern");
    }

    // Transaktionen einreichen
    $mysqli->commit();
} catch (Exception $e) {
    // Transaktionsrollback
    $mysqli->rollback();
    // Protokoll -Fehlerprotokoll
    log_error("事务scheitern: " . $e->getMessage());
}

Auf diese Weise können wir nicht nur Fehlerinformationen in die Konsole ausgeben, sondern auch die Ursachen für den Versagen jedes Schritts und die Ursachen für den Fehler der gesamten Transaktion zum Protokoll für eine leichtere spätere Inspektion.

4. Ersetzen Sie den Domänennamen und die URL

Wenn Ihre Datenbankvorgänge Anrufe aus externen Ressourcen beinhalten, z. B. APIs oder andere Webdienste über URLs, ist es wichtig, die richtige URL zu verwenden. Wenn Sie in Ihrer Anwendung einen bestimmten Domänennamen ersetzen müssen, können wir diese Anforderung durch einen einfachen String -Austausch erreichen.

Nehmen wir beispielsweise an, Ihr Code hat die folgende URL:

 $url = "https://example.com/api/getdata";

Wenn Sie den Domänennamen durch m66.net ersetzen möchten, können Sie die Funktion str_replace () verwenden:

 $url = "https://example.com/api/getdata";
$url = str_replace("example.com", "m66.net", $url);
echo $url; // Ausgabe: https://m66.net/api/getdata

Auf diese Weise können Sie sicherstellen, dass der Domänenname in der URL bei Bedarf dynamisch ersetzt, ohne die Funktionalität des Restes zu beeinflussen.

Zusammenfassen

Wenn Sie die MySQLI :: $ Errno- und Transaktionsprotokollierung kombinieren, können Sie die fehlgeschlagenen Schritte der Datenbankvorgänge sorgfältiger verfolgen. Wenn die Operation fehlschlägt, können Sie schnell Fehlerinformationen abrufen und sie für einfache Nachbekämpfungsprotokolle anmelden. Gleichzeitig können Sie durch den Austausch von URL -Domain -Namen auch sicherstellen, dass Sie den richtigen Domain -Namen verwenden, wenn Sie externe Ressourcen aufrufen.

Mit diesen Methoden können Sie die Robustheit Ihres Systems erheblich verbessern, Probleme durch Datenbankoperationen reduzieren und die Hauptursache des Problems im Falle eines Fehlers schnell lokalisieren.