PHP의 트랜잭션 처리 메커니즘은 데이터베이스 작업의 무결성을 보장하도록 설계되었습니다. 이를 통해 일련의 작업을 완전히 실행하거나 전혀 실행할 수 없습니다. 이는 트랜잭션을 시작하고, 작업을 수행하고, 적절하게 트랜잭션을 커밋하거나 롤백함으로써 수행됩니다. 트랜잭션을 사용하면 업데이트 중에 데이터베이스의 일관성을 유지할 수 있습니다.
PHP 데이터베이스 연결의 트랜잭션 처리 메커니즘에 대한 자세한 설명
트랜잭션 처리
트랜잭션 처리는 데이터베이스의 무결성을 유지하는 일련의 작업으로, 데이터베이스의 일관성을 보장합니다. PHP에서는 트랜잭션을 사용하여 일련의 작업이 모두 수행되거나 전혀 수행되지 않도록 할 수 있습니다.
거래 기능
거래를 시작하려면 다음 기능을 사용할 수 있습니다.
mysqli_begin_transaction($mysqli);
거래가 시작되면 작업을 수행할 수 있습니다. 모든 작업이 수행된 후 트랜잭션이 커밋되거나 롤백될 수 있습니다.
mysqli_commit($mysqli); //提交事务 mysqli_rollback($mysqli); //回滚事务
실제 사례
사용자가 상품을 구매할 수 있는 전자상거래 웹사이트가 있다고 가정합니다. 사용자가 주문을 하면 다음 세 가지 테이블을 업데이트해야 합니다.
users
테이블 - 사용자 정보 users
表 - 用户信息orders
表 - 订单信息order_items
orders
테이블 - 주문 정보 order_items
code> 테이블 - 주문에 포함된 항목
<?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."; } ?>위 코드에서는 먼저 트랜잭션을 엽니다. 그런 다음 실행해 보십시오. 테이블을 업데이트하는 세 가지 작업이 있습니다. 모든 작업이 성공하면 트랜잭션이 커밋됩니다. 작업 중 하나가 실패하면 트랜잭션이 롤백되고 사용자에게 오류 메시지가 표시됩니다.
Notes
위 내용은 PHP 데이터베이스 연결의 트랜잭션 처리 메커니즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!