PHP Oracle Multi表作为一个块插入

时间:2012-10-24 06:52:43

标签: php oracle

在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语句,则回滚整个事务? 非常感谢在这方面的任何帮助。

1 个答案:

答案 0 :(得分:1)

请参阅此post

$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);
}