Php codeigniter控制器中的事务?
我正在使用Codeigniter 2.1.4并尝试实现一个事务。我可能错过了事务的要点,但我正在尝试将一个文件上载到我的服务器,并为该文件创建一个数据库条目。如果行插入或文件上载失败,我不想这样做 这是我控制器的要点 首先打开交易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') 检查以
$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_会自动完成回滚或提交。