我正在使用Codeigniter 2.1.4并尝试实现一个事务。我可能错过了交易点,但我想要做的是将文件上传到我的服务器,并为该文件创建一个数据库条目。如果行插入或文件上传失败,我也不想这样做。
这是我的控制器的要点
首先打开交易
$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();
}
事务不起作用,每次都添加数据库条目,无论上传是否失败。
现在从以前的阅读开始,似乎交易属于模型,但这对我不起作用,因为我也在上传文件。
关于如何实现这个的想法?
答案 0 :(得分: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();
}