PHP操作MySQL事務處理
阿新 • • 發佈:2018-12-31
/*************** 用begin,rollback,commit來實現 ***************/ /*方法二*/ $conn = mysqli_connect('localhost','root','root','test') or die ("資料連線錯誤!!!"); mysqli_query("set names utf8mb4"); //使用GBK中文編碼; //開始一個事務 mysqli_query("BEGIN"); //或者mysqli_query("START TRANSACTION"); $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//這條我故意寫錯 $res = mysqli_query($sql); $res1 = mysqli_query($sql2); if($res && $res1){ mysqli_query("COMMIT"); echo '提交成功。'; }else{ mysqli_query("ROLLBACK"); echo '資料回滾。'; } mysqli_query("END"); /**************** 直接用set來改變mysql的自動提交模式 *******************/ /*方法二*/ mysqli_query("SET AUTOCOMMIT=0"); //設定mysql不自動提交,需自行用commit語句提交 $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')"; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//這條我故意寫錯 $res = mysqli_query($sql); $res1 = mysqli_query($sql2); if($res && $res1){ mysqli_query("COMMIT"); echo '提交成功。'; }else{ mysqli_query("ROLLBACK"); echo '資料回滾。'; } mysqli_query("END"); //事務處理完時別忘記mysql_query("SET AUTOCOMMIT=1");自動提交