Codeigniter框架的更新事務(wù)(transaction)BUG及解決方法
由于ci事務(wù)判斷出錯回滾的條件是語句是否執(zhí)行成功,而更新操作時,就算影響的條數(shù)為0,sql語句執(zhí)行的結(jié)果過仍然為1,因為它執(zhí)行成功了,只是影響的條數(shù)為0。
下面介紹解決這個問題的方法:
對于一次要執(zhí)行許多的語句的事務(wù)
只需在更新操作下根據(jù)影響條數(shù)是否為0來決定是否會滾即可,下面假設(shè)第二條語句為更新操作。
//采用 Codeigniter 事務(wù)的手動模式
$this->db->trans_strict(FALSE);
$this->db->trans_begin();
$this->db->query('SELECT ...');//SELECT 操作無需特殊處理
$this->db->query('INSERT ...');//INSERT 出錯會有 Codeigniter 自動處理
$this->db->query('UPDATE ...');
if (!$this->db->affacted_rows()) {//上面的 UPDATE 失敗則回滾
$this->db->trans_rollback();
//@todo 異常處理部分
exit();//需要終止或跳出,以免下面的 SQL 代碼繼續(xù)執(zhí)行!
}
$this->db->query('DELETE ...');
if (!$this->db->affacted_rows()) {//上面的 DELETE 失敗則回滾
$this->db->trans_rollback();
//@todo 異常處理部分
exit();//需要終止或跳出,以免下面的 SQL 代碼繼續(xù)執(zhí)行!
}
$this->db->query('SELECT ...');//SELECT 操作無需特殊處理
$this->db->query('INSERT ...');//INSERT 出錯會有 Codeigniter 自動處理
if ($this->db->trans_status() === TRUE) {
$this->db->trans_commit();
} else {
$this->db->trans_rollback();
//@todo 異常處理部分
}
如果一次執(zhí)行的語句不是很多,可以在最后做一下判斷來決定回滾
若語句中沒有更新操作,用自動事務(wù)就可以。
- apache+codeigniter 通過.htcaccess做動態(tài)二級域名解析
- CI框架給視圖添加動態(tài)數(shù)據(jù)
- Cisco 路由器動態(tài)和靜態(tài)地址轉(zhuǎn)換
- CI(CodeIgniter)框架中的增刪改查操作
- 在CODEIGNITER中 在CI中引入外部的JS與CSS呢
- Codeigniter(CI)框架分頁函數(shù)及相關(guān)知識
- CI(CodeIgniter)框架介紹
- CI(CodeIgniter)框架配置
- CodeIgniter模板引擎使用實例
- php之CodeIgniter學(xué)習(xí)筆記
- Codeigniter注冊登錄代碼示例
- 解析CodeIgniter自定義配置文件
- 基于Codeigniter框架實現(xiàn)的student信息系統(tǒng)站點動態(tài)發(fā)布功能詳解
相關(guān)文章
用PHP的socket實現(xiàn)客戶端到服務(wù)端的通信實例詳解
本篇文章主要介紹了用PHP的socket實現(xiàn)客戶端到服務(wù)端的通信實例詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
WordPress偽靜態(tài)規(guī)則設(shè)置代碼實例
這篇文章主要介紹了WordPress偽靜態(tài)規(guī)則設(shè)置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
Codeigniter出現(xiàn)錯誤提示Error with CACHE directory的解決方案
這篇文章主要介紹了Codeigniter出現(xiàn)錯誤提示Error with CACHE directory的解決方案,需要的朋友可以參考下2014-06-06
Yii2使用小技巧之通過 Composer 添加 FontAwesome 字體資源
前天幫同事改個十年前的網(wǎng)站 bug,頁面上一堆 include require 不禁讓人抱頭痛哭??吹?V2EX 上的討論說,寫 PHP 不用框架等同于耍流氓。Yii Framework 是我使用了 2 年多的 PHP 框架,器大活好,皮實耐操。 Yii2 還在 Beta 中,不過不影響拿來預(yù)研。2014-06-06
Zend Framework框架中實現(xiàn)Ajax的方法示例
這篇文章主要介紹了Zend Framework框架中實現(xiàn)Ajax的方法,結(jié)合實例形式詳細分析了Zend Framework框架中實現(xiàn)ajax功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
thinkphp中字符截取函數(shù)msubstr()用法分析
這篇文章主要介紹了thinkphp中字符截取函數(shù)msubstr()用法,結(jié)合實例形式較為詳細的分析了thinkPHP中字符截取函數(shù)msubstr()的功能、定義使用技巧與注意事項,需要的朋友可以參考下2016-01-01

