Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有多个表的codeigniter中的事务_Mysql_Codeigniter_Transactions_Rollback - Fatal编程技术网

Mysql 具有多个表的codeigniter中的事务

Mysql 具有多个表的codeigniter中的事务,mysql,codeigniter,transactions,rollback,Mysql,Codeigniter,Transactions,Rollback,一般来说,我不熟悉事务,尤其是CodeIgniter。我正在使用InnoDB和所有东西,但我的事务不会在我希望的时候回滚。这是我的代码(稍微简化) 我没有收到任何错误消息,但它也不会回滚。它应该在提交之前的最后一次trans_回滚时回滚。我的模型都在“dog”数据库中,因此我认为事务将包含在模型的功能中。也许你不能用这样的模型。任何帮助都将不胜感激!谢谢 也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?也许,这是因为你使用$dog\u

一般来说,我不熟悉事务,尤其是CodeIgniter。我正在使用InnoDB和所有东西,但我的事务不会在我希望的时候回滚。这是我的代码(稍微简化)


我没有收到任何错误消息,但它也不会回滚。它应该在提交之前的最后一次trans_回滚时回滚。我的模型都在“dog”数据库中,因此我认为事务将包含在模型的功能中。也许你不能用这样的模型。任何帮助都将不胜感激!谢谢

也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?

也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?

好吧,我知道这篇文章很古老,但这是我的2美分:

我不认为:

if(!$this->descriptions->insert($new_description))
将起作用,因为CI活动记录中的插入函数始终返回TRUE(成功与否)。如果您使用的是调试模式,CI将在出现错误时停止并向用户抛出屏幕消息,但insert函数仍将返回TRUE

因此,如果您愿意使用CI“手动”控制事务,则必须使用以下内容:

...

$this->db->trans_begin();

$this->db->insert('FOO');

if ($this->db->trans_status() === FALSE){

    $this->db->trans_rollback();

}else{

    $this->db->trans_commit();

}

希望这有助于某人…某个时候…某个地方

好吧,我知道这篇文章很古老,但这是我的2美分:

我不认为:

if(!$this->descriptions->insert($new_description))
将起作用,因为CI活动记录中的插入函数始终返回TRUE(成功与否)。如果您使用的是调试模式,CI将在出现错误时停止并向用户抛出屏幕消息,但insert函数仍将返回TRUE

因此,如果您愿意使用CI“手动”控制事务,则必须使用以下内容:

...

$this->db->trans_begin();

$this->db->insert('FOO');

if ($this->db->trans_status() === FALSE){

    $this->db->trans_rollback();

}else{

    $this->db->trans_commit();

}

希望这有助于某人…某个时候…某个地方

是的,这是一个打字错误,哈哈。编辑。是的,这是一个打字错误,哈哈。编辑。