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

问题是由于未知原因,有时所有插入查询都不会运行,因此我无法跟踪所有表中的特定信息。有什么方法可以确保所有插入命令都必须运行?或者如果任何插入语句未运行,则回滚整个事务?非常感谢这方面的任何帮助。

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 回答