Le mécanisme de traitement des transactions en PHP est conçu pour garantir l'intégrité des opérations de base de données. Il permet d'exécuter un ensemble d'opérations dans leur intégralité ou aucune. Ceci est accompli en démarrant une transaction, en effectuant des opérations et en validant ou en annulant la transaction, selon le cas. En utilisant des transactions, vous pouvez garantir que la base de données reste cohérente lors des mises à jour.
Explication détaillée du mécanisme de traitement des transactions dans la connexion à la base de données PHP
Traitement des transactions
Le traitement des transactions est une série d'opérations qui maintiennent l'intégrité de la base de données, ce qui garantit la cohérence de la base de données. En PHP, vous pouvez utiliser des transactions pour garantir que tout ou rien d'un ensemble d'opérations est effectué.
Fonctions de transaction
Pour démarrer une transaction, vous pouvez utiliser la fonction suivante :
mysqli_begin_transaction($mysqli);
Une fois la transaction démarrée, vous pouvez effectuer des opérations. Une fois toutes les opérations effectuées, la transaction peut être validée ou annulée :
mysqli_commit($mysqli); //提交事务 mysqli_rollback($mysqli); //回滚事务
Cas pratique
Supposons que nous ayons un site Web de commerce électronique via lequel les utilisateurs peuvent acheter des biens. Lorsqu'un utilisateur passe une commande, les trois tableaux suivants doivent être mis à jour :
utilisateurs
- informations sur l'utilisateur users
表 - 用户信息orders
表 - 订单信息order_items
commandes
- informations sur la commande order_items
Table - Articles inclus dans la commande
<?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."; } ?>
Remarques
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!