Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Transaktionsverarbeitungsmechanismus in der PHP-Datenbankverbindung

Detaillierte Erläuterung des Transaktionsverarbeitungsmechanismus in der PHP-Datenbankverbindung

WBOY
WBOYOriginal
2024-06-02 18:17:00732Durchsuche

Der Transaktionsverarbeitungsmechanismus in PHP soll die Integrität von Datenbankoperationen sicherstellen. Er ermöglicht die vollständige oder vollständige Ausführung einer Reihe von Operationen. Dies wird erreicht, indem eine Transaktion gestartet, Vorgänge ausgeführt und die Transaktion je nach Bedarf festgeschrieben oder zurückgesetzt wird. Durch den Einsatz von Transaktionen können Sie sicherstellen, dass die Datenbank bei Aktualisierungen konsistent bleibt.

Detaillierte Erläuterung des Transaktionsverarbeitungsmechanismus in der PHP-Datenbankverbindung

Detaillierte Erläuterung des Transaktionsverarbeitungsmechanismus in der PHP-Datenbankverbindung

Transaktionsverarbeitung

Die Transaktionsverarbeitung ist eine Reihe von Vorgängen, die die Integrität der Datenbank aufrechterhalten und so die Konsistenz der Datenbank sicherstellen. In PHP können Sie Transaktionen verwenden, um sicherzustellen, dass entweder alle oder keine einer Reihe von Vorgängen ausgeführt werden.

Transaktionsfunktionen

Um eine Transaktion zu starten, können Sie die folgende Funktion verwenden:

mysqli_begin_transaction($mysqli);

Sobald die Transaktion gestartet ist, können Sie Vorgänge ausführen. Nachdem alle Vorgänge ausgeführt wurden, kann die Transaktion festgeschrieben oder rückgängig gemacht werden:

mysqli_commit($mysqli); //提交事务
mysqli_rollback($mysqli); //回滚事务

Praktischer Fall

Angenommen, wir haben eine E-Commerce-Website, über die Benutzer Waren kaufen können. Wenn ein Benutzer eine Bestellung aufgibt, müssen die folgenden drei Tabellen aktualisiert werden:

  • users-Tabelle – Benutzerinformationen users 表 - 用户信息
  • orders 表 - 订单信息
  • order_items
  • orders-Tabelle – Bestellinformationen

order_itemscode> Tabelle – In der Bestellung enthaltene Artikel

Um die Integrität dieser drei Tabellen sicherzustellen, können wir während des Bestellvorgangs die Transaktionsverarbeitung verwenden:

<?php
$mysqli = new mysqli("localhost", "root", "password", "ecomm");

// 开启事务
$mysqli->begin_transaction();

try {
    // 更新 users 表
    $sql = "UPDATE users SET balance = balance - ? WHERE id = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("di", $_POST['balance'], $_POST['user_id']);
    $stmt->execute();

    // 更新 orders 表
    $sql = "INSERT INTO orders (user_id, total_amount) VALUES (?, ?)";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("di", $_POST['user_id'], $_POST['total_amount']);
    $stmt->execute();

    // 更新 order_items 表
    foreach ($_POST['items'] as $item) {
        $sql = "INSERT INTO order_items (order_id, product_id, quantity, unit_price) VALUES (?, ?, ?, ?)";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param("iiii", $last_inserted_order_id, $item['product_id'], $item['quantity'], $item['unit_price']);
        $stmt->execute();
    }

    // 提交事务
    $mysqli->commit();
    echo "Order placed successfully!";
} catch (Exception $e) {
    // 如果出现异常,回滚事务
    $mysqli->rollback();
    echo "An error occurred while placing the order.";
}
?>
Im obigen Code öffnen wir zunächst eine Transaktion und versuchen Sie dann, es auszuführen. Drei Vorgänge zum Aktualisieren der Tabelle. Wenn alle Vorgänge erfolgreich sind, wird die Transaktion festgeschrieben. Wenn einer der Vorgänge fehlschlägt, wird die Transaktion zurückgesetzt und dem Benutzer wird eine Fehlermeldung angezeigt.

Hinweise

  • Bei der Verwendung der Transaktionsverarbeitung müssen Sie die folgenden Punkte beachten:
  • Alle Vorgänge in einer Transaktion müssen in derselben Datenbankverbindung ausgeführt werden.
  • Alle Vorgänge innerhalb einer Transaktion müssen atomar sein, das heißt, sie werden entweder alle ausgeführt oder keine.
🎜Transaktionen können Deadlocks verursachen, daher ist beim Entwerfen des Transaktionsverarbeitungscodes Vorsicht geboten. 🎜🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Transaktionsverarbeitungsmechanismus in der PHP-Datenbankverbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn