微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Codeigniter交易

codeIgniter中的事务如何工作?我可以在交易后停止并互相启动吗?

看看我的例子

$this->db->trans_begin();

$a = 'UPDATE ......'; RETURN TRUE
$b = 'INSERT INTO......'; RETURN FALSE

$this->db->trans_rollback(); // I tried $this->db->trans_off();

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

$this->db->trans_begin();

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

我的第一个事务将始终返回FALSE(即使我确实需要回滚它),现在我需要关闭该事务并需要启动另一个事务.

问题在于$this-> db-> trans_status(),它总是在第二个事务上返回FALSE(即使在$this-> db-> trans_rollback()或trans_off()之后).

我究竟做错了什么 ?请帮我.

I am using MysqL as underlying database.

解决方法:

现在可以手动设置trans_status了

$this->db->trans_begin();

$a = 'UPDATE ......'; RETURN TRUE
$b = 'INSERT INTO......'; RETURN FALSE

$this->db->trans_rollback(); //First transaction ends it will return FALSE always(in my case)

$this->db->_trans_status = TRUE; // setting the trans_status manually ,so it will ignore prevIoUs attempts 

$this->db->trans_begin();


//other operations ..


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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐