事務(wù)能力關(guān)于事務(wù)想必大家也都有一定的了解 , 所以在這里也不介紹具體的概念了 , 我們只看看在 PDO 中事務(wù)是如何實(shí)現(xiàn)的 。首先 , 我們先看下在沒有事務(wù)的情況下會發(fā)生什么 。
$pdo->exec("insertintotran_innodb(name,age)values('Joe',12)");//成功插入$pdo->exec("insertintotran_innodb2(name,age)values('Joe',12)");//報(bào)錯(cuò)停止整個(gè)PHP腳本執(zhí)行//Fatalerror:UncaughtPDOException:SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'blog_test.tran_innodb2'doesn'texist假設(shè)這兩個(gè)表需要同時(shí)更新 , 但第二條語句報(bào)錯(cuò)了 。在沒有事務(wù)的情況下 , 我們第一條數(shù)據(jù)是會正常插入成功的 , 這并不是我們需要的結(jié)果 。在這時(shí) , 就需要事務(wù)能力的幫助 , 讓我們能夠讓兩個(gè)表要么同時(shí)成功 , 要么同時(shí)失敗 。
try{//開始事務(wù)$pdo->beginTransaction();$pdo->exec("insertintotran_innodb(name,age)values('Joe',12)");$pdo->exec("insertintotran_innodb2(name,age)values('Joe',12)");//不存在的表//提交事務(wù)$pdo->commit();}catch(Exception$e){//回滾事務(wù)$pdo->rollBack();//輸出報(bào)錯(cuò)信息echo"Failed:".$e->getMessage(),PHP_EOL;//Failed:SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'blog_test.tran_innodb2'doesn'texist}首先就是 beginTransaction() 方法 , 它是用來關(guān)閉數(shù)據(jù)庫的自動提交 , 并啟動一個(gè)事務(wù) , 在這個(gè)方法之后 , 只有遇到 commit() 或者 rollBack() 方法后才會關(guān)閉這個(gè)事務(wù) 。
commit() 方法就是操作過程中沒有出現(xiàn)意外的話 , 就將在 beginTransaction() 之后的所有數(shù)據(jù)操作一起打包提交 。
rollBack() 是回滾數(shù)據(jù) , 當(dāng) beginTransaction() 之后的某一條語句或者代碼出現(xiàn)問題時(shí) , 回滾之前的數(shù)據(jù)操作 , 保證 beginTransaction() 之后的所有語句要么都成功 , 要么都失敗 。
就是這樣三個(gè)簡單的函數(shù) , 就為我們完成了整個(gè)事務(wù)操作 。關(guān)于事務(wù)的深入學(xué)習(xí)我們會在將來深入地研究 MySQL 時(shí)再進(jìn)行探討 。在這里我們需要注意的是 , PDO 對象最好指定錯(cuò)誤模式為拋出異常 , 如果不指定錯(cuò)誤模式的話 , 事務(wù)中出現(xiàn)的錯(cuò)誤也不會直接報(bào)錯(cuò) , 而是返回錯(cuò)誤碼 , 我們需要通過錯(cuò)誤碼來確定是否提交或回滾 。這樣遠(yuǎn)沒有異常機(jī)制來的簡潔直觀 。
總結(jié)我們簡單的梳理并學(xué)習(xí)了一下 PDO 中的預(yù)處理和事務(wù)相關(guān)的知識 , 接下來就要進(jìn)入 PDOStatement 對象相關(guān)內(nèi)容的學(xué)習(xí) 。PDOStatement 對象就是 PDO 的預(yù)處理對象 , 也就是在日常開發(fā)中我們會接觸到的最多的數(shù)據(jù)操作對象 。這塊可是重點(diǎn)內(nèi)容 , 大家可不能松懈了哦!
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- AI安裝序列號推薦 aics6序列號安裝教程
- 海康威視手機(jī)遠(yuǎn)程監(jiān)控設(shè)置教程 ??低曔h(yuǎn)程監(jiān)控設(shè)置
- 反滲透純水機(jī)如何安裝
- 講述sql2012數(shù)據(jù)庫系統(tǒng)使用 sql2012安裝教程
- html5零基礎(chǔ)入門教程 html技術(shù)的特點(diǎn)和功能
- windows域賬號登錄方式 windows域管理教程
- psd模板使用教程 psd網(wǎng)頁模板怎么用
- 詳解godaddy退款流程 godaddy退款教程
- 詳解ajax框架作用 ajax框架教程
- 家里安裝煙感器的作用
