Mekanisme pemprosesan transaksi dalam PHP direka untuk memastikan integriti operasi pangkalan data Ia membolehkan satu set operasi dilaksanakan sepenuhnya atau tidak. Ini dicapai dengan memulakan urus niaga, melaksanakan operasi dan melakukan atau melancarkan semula urus niaga mengikut kesesuaian. Dengan menggunakan transaksi, anda boleh memastikan bahawa pangkalan data kekal konsisten semasa kemas kini.
Penjelasan terperinci tentang mekanisme pemprosesan transaksi dalam sambungan pangkalan data PHP
Pemprosesan transaksi
Pemprosesan transaksi ialah satu siri operasi yang mengekalkan integriti pangkalan data, yang memastikan ketekalan pangkalan data. Dalam PHP, anda boleh menggunakan transaksi untuk memastikan sama ada semua atau tiada satu set operasi dilakukan.
Fungsi Transaksi
Untuk memulakan transaksi, anda boleh menggunakan fungsi berikut:
mysqli_begin_transaction($mysqli);
Setelah transaksi bermula, anda boleh melakukan operasi. Selepas semua operasi dilakukan, urus niaga boleh dilakukan atau ditarik balik:
mysqli_commit($mysqli); //提交事务 mysqli_rollback($mysqli); //回滚事务
Kes praktikal
Katakan kita mempunyai laman web e-dagang di mana pengguna boleh membeli barangan. Apabila pengguna membuat pesanan, tiga jadual berikut perlu dikemas kini:
users
表 - 用户信息orders
表 - 订单信息order_items
<?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."; } ?>
Nota
Atas ialah kandungan terperinci Penjelasan terperinci mengenai mekanisme pemprosesan transaksi dalam sambungan pangkalan data PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!