2014-04-23 3 views
0

I가 내가 $ 문장 2에 오류를 강제하고 있고 내가 출력으로 '2 실패'얻을 코드를 실행하지만 때 문제가 $입니다PHP으로 ADOdb는 존중하지 AUTOCOMMIT = 거짓

<?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(); 
    } 

} 
?> 

다음 코드 statement1이 실행되고 레코드가 DB에 삽입됩니다.

내가 원한 것은 모든 문장이 실패하지 않는 경우에만 문장을 저지르는 것이다. $ db-> autoCommit = false; - 일하는 것 같지 않아?

해결 방법을 알려 주시면 감사하겠습니다. 감사

$ AUTOCOMMIT 변수가 "수정하지 않는 개인"것으로 지적된다

답변