Php codeigniter控制器中的事务?

Php codeigniter控制器中的事务?,php,codeigniter,file-upload,transactions,Php,Codeigniter,File Upload,Transactions,我正在使用Codeigniter 2.1.4并尝试实现一个事务。我可能错过了事务的要点,但我正在尝试将一个文件上载到我的服务器,并为该文件创建一个数据库条目。如果行插入或文件上载失败,我不想这样做 这是我控制器的要点 首先打开交易 $this->db->trans_begin() 使用模型添加条目 $fileId=$this->file\u model->addFile('someinfo') 执行文件上传 $upload=$this->upload->do_upload('file') 检查以

我正在使用Codeigniter 2.1.4并尝试实现一个事务。我可能错过了事务的要点,但我正在尝试将一个文件上载到我的服务器,并为该文件创建一个数据库条目。如果行插入或文件上载失败,我不想这样做

这是我控制器的要点

首先打开交易

$this->db->trans_begin()

使用模型添加条目

$fileId=$this->file\u model->addFile('someinfo')

执行文件上传

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

检查以确保两者都通过

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

//rollback
else{
    $this->db->trans_rollback();
}
事务不起作用,无论上传是否失败,每次都会添加数据库条目

从前面的阅读来看,似乎事务属于该模型,但这对我来说不起作用,因为我还上传了一个文件

关于如何实现这一点的想法?

尝试以下方法:

$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();
}

您正在使用什么RDBMS?例如,这可能是由mysql+MyIsam表引起的。非常感谢。我完全忘记了MyISAM不支持事务。我在想这和PHP有关。那要花我一段时间才能弄明白。如果您想添加答案,我很乐意接受。是否需要在完成trans_后进行检查?据我所知,trans_会自动完成回滚或提交。