In PHP kann die Verwendung der MySQLI -Erweiterung uns helfen, mit der MySQL -Datenbank zu interagieren, in der MySQLi_stmt :: $ -Fehler eine sehr nützliche Funktion ist, mit der Fehlerinformationen in Bezug auf Vorverarbeitungsanweisungen abgerufen werden können. Wenn wir Datenbankvorgänge ausführen, können Fehler bei der Datenkonsistenz von Daten verursachen, insbesondere bei mehrstufigen Operationen. Um die Zuverlässigkeit des Vorgangs zu gewährleisten, können wir die Funktion MySQLI_STMT :: $ ERROR in Kombination mit der Funktion des Transaktionsmanagements verwenden, um Fehler zu behandeln und zurückzurollen, wenn ein Fehler auftritt, wodurch die Konsistenz und Integrität der Daten sichergestellt wird.
MYSQLI_STMT :: $ ERROR ist eine Eigenschaft in der MySQLi_stmt -Klasse, die Fehlerinformationen zurückgibt, die sich auf die kürzlich ausgeführte Vorverarbeitungsanweisung beziehen. Diese Eigenschaft ist sehr wichtig, um die Richtigkeit von SQL -Aussagen zu debugieren und sicherzustellen. Es gibt eine Zeichenfolge zurück, die die Fehlermeldung enthält, und wenn kein Fehler auftritt, ist eine leere Zeichenfolge.
Eine Transaktion ist eine Sammlung von Operationen, die entweder Erfolg haben oder scheitern. Das Transaktionsmanagement in MySQL kann uns helfen, sicherzustellen, dass wir bei der Durchführung mehrerer Vorgänge auch dann in den Vor-Operation-Status wiederherstellen können, wenn ein Fehler in der Mitte auftritt. Durch die Durchführung mehrerer Vorgänge in einer Transaktion können wir die Konsistenz und Integrität unserer Daten sicherstellen.
In MySQL können Transaktionen durch die folgenden SQL -Anweisungen gesteuert werden:
Transaktion beginnen oder starten: Starten Sie eine Transaktion.
Commit : Senden Sie Transaktionen, damit die Änderungen dauerhaft vorgenommen wurden.
Rollback : Rollback die Transaktion und widerrufen alle Änderungen in der Transaktion.
Bei der Durchführung von Datenbankvorgängen, insbesondere wenn mehrere Schritte von Datenaktualisierungen beteiligt sind, müssen wir sicherstellen, dass jeder Schritt erfolgreich ist. Wenn einer dieser Schritte fehlschlägt, sollte die gesamte Transaktion zurückgerollt werden, um einige Datenaktualisierungen erfolgreich zu vermeiden, während andere fehlschlagen, was zu einer Inkonsistenz bei den Daten führt. Wir können MySQLI_STMT :: $ ERROR verwenden, um die Fehlermeldung von SQL -Anweisungen zu erfassen und die Transaktion zurückzurollen, wenn ein Fehler auftritt.
Hier ist ein einfaches Beispiel, das zeigt, wie Sie die Funktion MySQLI_STMT :: $ ERROR mit Transaktionsrollback kombinieren:
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Starten Sie eine Transaktion
$mysqli->begin_transaction();
try {
// Der erste Abfragebetrieb
$stmt = $mysqli->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$stmt->bind_param("ss", $username, $email);
$username = 'johndoe';
$email = '[email protected]';
$stmt->execute();
// Überprüfen Sie auf Fehler
if ($stmt->error) {
throw new Exception("Bei der Ausführung einer Abfrage trat ein Fehler auf: " . $stmt->error);
}
// Der zweite Abfragebetrieb
$stmt = $mysqli->prepare("UPDATE accounts SET balance = balance - 100 WHERE user_id = ?");
$stmt->bind_param("i", $user_id);
$user_id = 1;
$stmt->execute();
// Überprüfen Sie auf Fehler
if ($stmt->error) {
throw new Exception("Bei der Ausführung einer Abfrage trat ein Fehler auf: " . $stmt->error);
}
// Transaktionen einreichen
$mysqli->commit();
echo "Der Betrieb ist erfolgreich!";
} catch (Exception $e) {
// Wenn ein Fehler auftritt,Rollen Sie Transaktionen zurück
$mysqli->rollback();
echo "Operation fehlgeschlagen: " . $e->getMessage();
}
// Schließen Sie die Verbindung
$mysqli->close();
?>
Starten Sie eine Transaktion:
Wir verwenden $ mysqli-> begin_transaction (); eine Transaktion starten. Dadurch werden die nächsten Datenbankvorgänge innerhalb derselben Transaktion durchgeführt.
Datenbankvorgänge durchführen:
Verwenden Sie die MySQLI -Vorverarbeitungsanweisung, um zwei Datenbankvorgänge auszuführen: eine Einfügungsoperation und eine Aktualisierungsoperation. Nach jeder Operation überprüfen wir, ob ein Fehler aufgetreten ist. Wenn ein Fehler auftritt, werfen wir eine Ausnahme durch neue Ausnahme und rollen die Transaktion in Ausnahmebehandlung zurück.
Überprüfen Sie auf Fehler:
Wir erhalten die Fehlermeldung, wenn die SQL-Ausführung über $ STMT-> Fehler ausgeführt wird. Wenn ein Fehler auftritt, werfen wir eine Ausnahme und rollen die Transaktion zurück. Auf diese Weise werden sowohl die vorherigen Operationen als auch die nachfolgenden Operationen widerrufen, um die Konsistenz der Daten sicherzustellen.
Rollen Sie die Transaktion zurück:
Wenn während des Betriebs eine Ausnahme erfasst wird, werden wir die Transaktion mit $ mysqli-> rollback () zurückdrehen. Dies wird alle in der Transaktion vorgenommenen Änderungen rückgängig machen und verhindert, dass einige Daten erfolgreich aktualisiert werden, während andere nicht aktualisiert werden.
Transaktion einreichen:
Wenn alle Vorgänge erfolgreich ausgeführt werden, reichen wir die Transaktion mit $ mySQLI-> commit () ein. Um sicherzustellen, dass die Änderungen dauerhaft in der Datenbank gespeichert werden.
Durch die Kombination des MySQLI_STMT :: $ -Fehlerfunktions- und Transaktions -Rollback -Mechanismus können wir die Zuverlässigkeit von Datenbankvorgängen sicherstellen. Wenn mehrere Datenbankvorgänge ausgeführt werden, kann die Transaktion bei Ausfall eines Vorgangs zurückgerollt werden, um Datenkonsistenzen zu vermeiden. Diese Methode verbessert nicht nur die Robustheit des Codes, sondern stellt auch sicher, dass die Daten nicht beschädigt werden, wenn Fehler auftreten. Es ist ein häufiger Fehlerbehandlungsmodus in der Entwicklung.