本節通過具體實例來介紹PHP是如何處理MySQL事務的。PHP處理MySQL事務是通過PHP中的預定義類MySQLi來完成的,該類中與事務處理相關的方法如下。
autocommit():該方法的參數為false或true,false表示禁止自動提交查詢,true表示自動提交查詢。
rollback():該方法的作用是當發生意外時,自動回滾到事務開始之前的狀態。
commit():該方法的作用是提交事務。
此處將通過銀行轉賬的過程來介紹事務的處理方式。前面已經介紹過銀行轉賬主要有兩個過程來完成,也就是需要執行兩個查詢,在這裡用tb_money代表金額表,用money代表金額字段,用user_out和user_in來分別表示匯款人和收款人。
首先建立與數據庫的連接:
$conn=new MySQLi("localhost","username","passWord","db_name"); //連接數據庫服務器
$conn->query("set names gb2312",MySQLI_USE_RESULT); //設置字符集為簡體中文
關閉查詢的自動提交:
$conn->autocommit(false);
建立第一步查詢:
$sql="update tb_money set money=money-1000";
$result1=$conn->query($sql , MySQLI_USE_RESULT);
if(!$result1) //發生意外則回滾
$conn->rollback();
建立第二步查詢:
$sq2="update tb_money set money=money+1000";
$result2=$conn->query($sq2 , MySQLI_USE_RESULT);
if(!$result2) //發生意外則回滾
$conn->rollback();
提交事務:
$conn->commit();
$conn->autocommit(true);
$conn->close();