只是想弄清楚为什么造假者的交易行为不像我预期的那样.
此事务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()将其报告为成功???
我在这里错过了什么?
谢谢大家:)
问候.