MySQLi面向對象實踐---事務處理
阿新 • • 發佈:2017-09-24
操作 begin cep fin 代碼 code except 處理 ini
在看這篇博客的時候,如果你有什麽疑惑嗎,可以參照一下這兩篇博客
MySQLi面向過程實踐---事務處理http://www.cnblogs.com/-beyond/p/7577232.html
PDO實現事務處理http://www.cnblogs.com/-beyond/p/7551177.html
MySQLi面向對象的事務處理涉及以下三個函數
public bool mysqli::begin_transaction ([ int $flags [, string $name ]] ) bool mysqli::commit ( void ) bool mysqli::rollback ( void )
示例代碼如下:
最重要的莫過於關閉自動提交
1 <?php 2 $db=new mysqli("localhost","root","root","test"); 3 4 $db->begin_transaction(); 5 $db->autocommit(FALSE);//重要 6 try{ 7 $sql_1="delete from aaa where uid = 2;"; 8 $db->query($sql_1); 9 if($db->affected_rows<=0){10 throw new Exception("failed to delete data one\n"); 11 //如果操作一失敗,則拋出異常,不會繼續執行下個操作 12 } 13 14 $sql_2="delete from aaa where uid = 999"; 15 $db->query($sql_2); 16 if($db->affected_rows<=0){ 17 throw new Exception("failed to delete data two\n");18 //如果操作2失敗,則拋出異常 19 } 20 21 if(!$db->commit()){ 22 throw new Exception("failed to commit\n"); 23 //如果提交操作出錯,則拋出異常 24 } 25 echo "success to delete two data\n"; 26 } catch (Exception $e){ 27 $db->rollback(); 28 echo $e->getMessage(); 29 echo "haven‘t finish all works\n"; 30 } 31 32 $db->close(); 33 ?>
MySQLi面向對象實踐---事務處理