ci mysql 事务_mysql – codeigniter事务 – trans_start trans_co...

只是想弄清楚为什么造假者的交易行为不像我预期的那样.

此事务trans_status()触发’TRANS SUCCESS’:

$this->db->trans_start();

$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");

$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `ID` = '2'");

$this->db->trans_complete();

if($this->db->trans_status() === FALSE){// Check if transaction result successful

echo "
------- TRANS FAILED -------";

}else{

echo "
------- TRANS SUCCESS -------";

}

TABLE1更新为’AAA’,TABLE2更新为’BBB’

此事务trans_status()按预期报告’TRANS FAILED’,因为TABLE2中不存在’incorrectID’列:

$this->db->trans_start();

$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");

$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `incorrectID` = '2'");

$this->db->trans_complete();

if($this->db->trans_status() === FALSE){// Check if transaction result successful

echo "
------- TRANS FAILED -------";

}else{

echo "
------- TRANS SUCCESS -------";

}

TABLE1未使用“AAA”更新,而TABLE2未使用“BBB”更新

然而,这个交易trans_status()报告’TRANS SUCCESS’,即使没有值为’55’TABLE2的ID?!?!:

$this->db->trans_start();

$this->db->query("UPDATE `TABLE1` SET `NAME` = 'AAA' WHERE `ID` = '1'");

$this->db->query("UPDATE `TABLE2` SET `NAME` = 'BBB' WHERE `ID` = '55'");

$this->db->trans_complete();

if($this->db->trans_status() === FALSE){// Check if transaction result successful

echo "
------- TRANS FAILED -------";

}else{

echo "
------- TRANS SUCCESS -------";

}

TABLE1用’AAA’更新并且TABLE2没有得到更新,因为TABLE2上没有ID为55 – 但我希望它回滚,因为TABLE2 UPDATE不会成功.

是什么赋予了?我认为事务背后的想法是trans_start()和trans_complete()之间的所有内容必须成功才能使整个事务成功.否则整个事务将被回滚.

我用SET和UPDATE尝试了这个并且遇到了同样的问题.

第一个db-> query()将提交并保存更改,第二个db-> query()未完成,trans_status()将其报告为成功???

我在这里错过了什么?

谢谢大家:)

问候.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值