首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 事務處理實戰範例:MySQL 交易控制詳解

     編輯:PHP 相關知識

PHP 事務處理實戰範例:MySQL 交易控制詳解

在資料庫操作中,事務確保一組 SQL 語句要么全部成功,要么全部失敗,維護資料一致性。本文透過 PHP 操作 MySQL 示範事務的啟動、回滾與提交流程。

核心概念

  • 僅支援 InnoDB 引擎的資料表
  • 一段事務中 START TRANSACTION、ROLLBACK、COMMIT 各只能出現一次
  • 若事務缺少 COMMIT,所有操作雖執行但不生效;下一段事務啟動時會自動提交上一段

完整程式碼範例

<?php
// 資料庫連線
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $conn);
mysql_query("SET NAMES GBK");

/* 事務開始 */
mysql_query('START TRANSACTION');

$isBad = 0;

// 第一筆插入
$ins_testTable1 = "INSERT INTO testtable1(NAME,age) VALUES('first',23)";
if (!mysql_query($ins_testTable1)) {
    $isBad = 1;
}

// 第二筆插入(故意寫錯欄位名 ages)
$ins_testTable2 = "INSERT INTO testtable1(NAME,ages) VALUES('second','24')";
if (!mysql_query($ins_testTable2)) {
    $isBad = 1;
}

/* 根據執行結果決定提交或回滾 */
if ($isBad == 1) {
    echo $isBad;
    mysql_query('ROLLBACK');
}
mysql_query('COMMIT');
mysql_close($conn);
?>

關鍵點解析

  1. 錯誤標記機制:使用 $isBad 旗標記錄任一 SQL 失敗
  2. 原子性保證:任一插入失敗觸發 ROLLBACK,兩筆資料均不寫入
  3. 資源釋放:最後務必呼叫 mysql_close() 關閉連線

注意:mysql_* 函式已棄用,現代專案建議改用 PDO 或 MySQLi 的事務方法(beginTransaction()、rollBack()、commit())。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved