程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> PHP + MySQL事務操作的實際應用代碼演示

PHP + MySQL事務操作的實際應用代碼演示

編輯:MySQL綜合教程

以下的文章主要向大家描述的是PHP + MySQL事務操作的實際應用代碼演示,我們大家都知道在實際LAMP的應用中,一般PHP所使用的是AdoDB來對MySQL數據庫進行操作,下面給出AdoDB相應的代碼方便大家查閱:

  1. <?php   
  2. // ...   
  3. $adodb->startTrans();   

實際,getOne所調用的查詢也可以直接放到rowLock來進行,這裡只是為了演示效果能更明顯些。

  1. $adodb->rowLock('book', 'book_id = 123');   
  2. $bookNumber = $adodb->getOne("SELECT book_number FROM book WHERE book_id = 123");   
  3. $adodb->execute("UPDATE book SET book_numberbook_number = book_number - 1 WHERE book_id = 123");   
  4. $adodb->completeTrans();   
  5. // ...   
  6. ?> 

其中,rowLock的方法就是調用的FOR UPDATE來實現的行鎖,你可能會想把“FOR UPDATE”直接寫到$adodb->getOne()調用的那條SQL語句裡面去實現行鎖的功能,不錯,那樣確實可以,但是並不是所有的數據庫都使用“FOR UPDATE”語法來實現行鎖功能,比如Sybase使用“HOLDLOCK”的語法來實現行鎖功能,所以為了你的數據庫抽象層保持可移植性,我還是勸你用rowLock來實現行鎖功能,至於可移植性就交給AdoDB好了,嗯,有點扯遠了,今兒就說到這裡了。

上述的相關內容就是對PHP + MySQL事務操作的代碼演示的描述,希望會給你帶來一些幫助在此方面。

附:

AdoDB中存在一個setTransactionMode()方法,能夠設置事務的隔離級別,如下:

  1. SetTransactionMode allows you to pass in the transaction mode to use for all 
    subsequent transactions for that connection session. Note: if you have persistent 
    connections and using mysql or mssql, you might have to explicitly reset your 
    transaction mode at the beginning of each page request. This is only supported in postgresql, 
    mssql, mysql with InnoDB and oci8 currently. For example:  
  2. $db->SetTransactionMode("SERIALIZABLE");  
  3. $db->BeginTrans();  
  4. $db->Execute(...); $db->Execute(...);  
  5. $db->CommiTrans();  
  6. $db->SetTransactionMode(""); // restore to default  
  7. $db->StartTrans();  
  8. $db->Execute(...); $db->Execute(...);  
  9. $db->CompleteTrans();  
  10. Supported values to pass in:  
  11. * READ UNCOMMITTED (allows dirty reads, but fastest)  
  12. * READ COMMITTED (default postgres, mssql and oci8)  
  13. * REPEATABLE READ (default mysql)  
  14. * SERIALIZABLE (slowest and most restrictive)   

以上的相關內容就是對PHP + MySQL事務操作的代碼演示的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved