2013-10-30 85 views
0

我正在使用Codeigniter 2.1.4並試圖實現一個事務。我可能錯過了事務點,但我想要做的是上傳文件到我的服務器,併爲該文件創建一個數據庫條目。如果行插入或文件上傳失敗,我想不做。codeigniter控制器中的交易?

這是我控制的要點

先打開交易

$this->db->trans_begin();

添加與模型進入

$fileId = $this->file_model->addFile('someinfo');

執行文件上傳

$upload = $this->upload->do_upload('file');

檢查,以確保兩個通過

//commit 
if($fileId AND $upload){ 
    $this->db->trans_commit(); 
} 

//rollback 
else{ 
    $this->db->trans_rollback(); 
} 

交易不工作,如果上傳失敗或不是數據庫條目添加每一次,不管。

現在從以前的閱讀,它似乎是交易屬於模型,但這並不適用於我,因爲我也上傳了一個文件。

想法如何實現?

+1

什麼RDBMS您使用的?例如,這可能是由mysql + MyIsam表引起的。 – complex857

+0

非常感謝。它完全放棄了MyISAM不支持交易的想法。我認爲這是PHP相關的東西。那會花費我一段時間才能弄清楚。如果你想添加答案,我會很樂意接受它。 –

回答

1

這種嘗試:

$this->db->trans_start(); 

    //Your code Here... 

$this->db->trans_complete(); 

$trans_status = $this->db->trans_status(); 

if ($trans_status == FALSE) { 
    $this->db->trans_rollback(); 
} else { 
    $this->db->trans_commit(); 
}