亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

?? ??? ??
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
??

CodeIgniter的數(shù)據(jù)庫(kù)抽象允許您將事務(wù)與支持事務(wù)安全表類(lèi)型的數(shù)據(jù)庫(kù)一起使用。在MySQL中,您需要運(yùn)行InnoDB或BDB表類(lèi)型,而不是更常見(jiàn)的MyISAM。大多數(shù)其他數(shù)據(jù)庫(kù)平臺(tái)本機(jī)支持事務(wù)。

如果您不熟悉事務(wù),我們建議您找到一個(gè)很好的在線資源來(lái)了解您的特定數(shù)據(jù)庫(kù)。下面的信息假設(shè)您對(duì)事務(wù)有基本的理解。

CodeIgniter處理事務(wù)的方法

CodeIgniter使用一種與流行的數(shù)據(jù)庫(kù)類(lèi)ADODB所使用的進(jìn)程非常相似的事務(wù)處理方法。我們之所以選擇這種方法,是因?yàn)樗鼧O大地簡(jiǎn)化了運(yùn)行事務(wù)的過(guò)程。在大多數(shù)情況下,所需的只是兩行代碼。

傳統(tǒng)上,事務(wù)需要執(zhí)行相當(dāng)數(shù)量的工作,因?yàn)樗鼈円竽櫜樵?xún)并根據(jù)查詢(xún)的成功或失敗確定是提交還是回滾。這對(duì)于嵌套查詢(xún)尤其麻煩。相反,我們已經(jīng)實(shí)施了一個(gè)智能交易系統(tǒng),可以自動(dòng)完成所有這些工作(如果您愿意,也可以手動(dòng)管理您的交易,但實(shí)際上沒(méi)有任何好處)。

運(yùn)行事務(wù)

要使用事務(wù)運(yùn)行查詢(xún),您將使用$ this-> db-> trans_start()和$ this-> db-> trans_complete()函數(shù),如下所示:

$this->db->trans_start();$this->db->query('AN SQL QUERY...');$this->db->query('ANOTHER QUERY...');$this->db->query('AND YET ANOTHER QUERY...');$this->db->trans_complete();

您可以在開(kāi)始函數(shù)/完成函數(shù)之間運(yùn)行任意數(shù)量的查詢(xún),這些查詢(xún)都將根據(jù)任何給定查詢(xún)的成功或失敗被提交或回滾。

嚴(yán)格模式

默認(rèn)情況下,CodeIgniter以嚴(yán)格模式運(yùn)行所有事務(wù)。啟用嚴(yán)格模式時(shí),如果您正在運(yùn)行多組事務(wù),如果一個(gè)組失敗,所有組都將回滾。如果禁用嚴(yán)格模式,則每個(gè)組將被獨(dú)立處理,這意味著一個(gè)組的失敗不會(huì)影響其他組。

嚴(yán)格模式可以禁用如下:

$this->db->trans_strict(FALSE);

管理錯(cuò)誤

如果在config/database.php文件中啟用了錯(cuò)誤報(bào)告,如果提交失敗,您將看到一個(gè)標(biāo)準(zhǔn)錯(cuò)誤消息。如果關(guān)閉調(diào)試,您可以管理自己的錯(cuò)誤,如下所示:

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE){        // generate an error... or use the log_message() function to log your error}

禁用事務(wù)

如果希望禁用事務(wù),可以使用$this->db->trans_off()*

$this->db->trans_off();$this->db->trans_start();$this->db->query('AN SQL QUERY...');$this->db->trans_complete();

當(dāng)事務(wù)被禁用時(shí),您的查詢(xún)將自動(dòng)提交,就像在沒(méi)有事務(wù)的情況下運(yùn)行查詢(xún)時(shí)一樣,實(shí)際上忽略了對(duì)trans_start(),,,trans_complete()

測(cè)試模式

您可以選擇將交易系統(tǒng)置于“測(cè)試模式”,這將導(dǎo)致您的查詢(xún)被回滾 - 即使查詢(xún)產(chǎn)生了有效的結(jié)果。要使用測(cè)試模式,只需將$ this-> db-> trans_start()函數(shù)中的第一個(gè)參數(shù)設(shè)置為T(mén)RUE:

$this->db->trans_start(TRUE); // Query will be rolled back$this->db->query('AN SQL QUERY...');$this->db->trans_complete();

手動(dòng)運(yùn)行事務(wù)

如果您想手動(dòng)運(yùn)行事務(wù),可以這樣做:

$this->db->trans_begin();$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
if ($this->db->trans_status() === FALSE){
        $this->db->trans_rollback();}else{
        $this->db->trans_commit();
        }

確保在運(yùn)行手動(dòng)事務(wù)時(shí)使用$ this-> db-> trans_begin(),而不是 $ this-> db-> trans_start()。

?? ??: ?? ??: