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