我有以下代码
<?php
include("adodb5/adodb.inc.php"); // includes the adodb library
$db = NewADOConnection('mysql'); // A new connection
$conn = $db->Connect("localhost", "test", "password", "test_db");
if(!$conn){
echo 'failed to connect'; die();
}else{
$db->autoCommit = false;
$db->StartTrans();
$statement1 = $db->Prepare("insert into table1 (cod) values (1)");
$ok1 = $db->Execute($statement1);
$statement2 = $db->Prepare("insert into table2AAAAA (cod) values (1)");
$ok2 = $db->Execute($statement2);
$statement3 = $db->Prepare("insert into table3 (cod) values (1)");
$ok3 = $db->Execute($statement2);
if(!$ok1){
echo 'Failed 1';
$db->FailTrans();
}else if(!$ok2){
echo 'Failed 2';
$db->FailTrans();
}else if(!$ok3){
echo 'Failed 3';
$db->FailTrans();
}else if($ok1 && $ok2 && $ok3){ //ONLY IF ALL ARE OK THEN COMMIT
$db->CompleteTrans();
}
}
?>
我在 $statement2 上强制出错,当我运行代码时,我得到“失败 2”作为输出,但问题是 $statement1 被执行并且记录被插入到数据库中。
我想要的只是在所有语句都没有失败的情况下才提交语句。$db->autoCommit = 假;——好像没用?
如果您能指出我的解决方案,我将不胜感激。谢谢