1

Linux、PHP 4.3、および Oracle 10g では、候補者がオンラインで仕事に応募できるようにしています。適用ボタンで、このような挿入クエリを記述します

$sql1 = insert into job_table (…) values (…);  //inserting over 20 values
$stmt1=OCIParse($conn,$sql1);
OCIExecute($stmt1);

$sql2 = insert into personal_info_table (…) values (…);  //inserting over 50 values
$stmt2=OCIParse($conn,$sql2);
OCIExecute($stmt2);

$sql3 = insert into qualification_info_table (…) values (…);  //inserting over 20 values
$stmt3=OCIParse($conn,$sql3);
OCIExecute($stmt3);

問題は、不明な理由により、すべての挿入クエリが実行されないことがあるため、すべてのテーブルで特定の情報を追跡できないことです。すべての挿入コマンドを実行する必要があることを保証する方法はありますか? または、insert ステートメントが実行されない場合、トランザクション全体をロールバックしますか? この点でどんな助けでも大歓迎です。

4

1 に答える 1

1

この投稿を見る

$sql1 = insert into job_table (…) values (…);  //inserting over 20 values

$sql2 = insert into personal_info_table (…) values (…);  //inserting over 50 values

$sql3 = insert into qualification_info_table (…) values (…);  //inserting over 20 values

$success = true;

$sqls = Array($sql1, $sql2, $sql3);

foreach ($sqls as $sql) {
    $stmt1=OCIParse($conn,$sql);
    if ( !oci_execute($stmt1,OCI_DEFAULT) ) {    
        // If we have a problem
        oci_rollback($conn);
        $success = false;
        break;
    }
}

if($success) {
    oci_commit($conn);
}
于 2012-10-24T07:09:07.487 に答える