在PHP中执行下面这段时,ADODB报错1064,但从报错代码中直接把SQL语句COPY到phpMyAdmin中执行,却执行成功,不知问题出在哪里,请高手赐教
$sql = "begin;
insert into tb_review(product_id,review_type,member_id,user_name,grade,content) values('2','P','test11','test','5','etestetetee');
update tb_product set grade_total=grade_total+5,good_review=good_review+1,review_num=review_num+1 where id=2;
commit;";
$conn->execute($sql);
$sql = "begin;
insert into tb_review(product_id,review_type,member_id,user_name,grade,content) values('2','P','test11','test','5','etestetetee');
update tb_product set grade_total=grade_total+5,good_review=good_review+1,review_num=review_num+1 where id=2;
commit;";
$conn->execute($sql);
$sql = "insert into tb_review(product_id,review_type,member_id,user_name,grade,content) values('2','P','test11','test','5','etestetetee');";
$conn->execute($sql);$sql = "update tb_product set grade_total=grade_total+5,good_review=good_review+1,review_num=review_num+1 where id=2;";
$conn->execute($sql);分开执行呢?
adodb貌似不能那样。
mysql_query("BEGIN");
$sql = "insert into tb_review(product_id,review_type,member_id,user_name,grade,content) values('2','P','test11','test','5','etestetetee')";
$res1 = $conn->execute($sql);
$sql = "update tb_product set grade_total=grade_total+5,good_review=good_review+1,review_num=review_num+1 where id=2;";
$res2 = $conn->execute($sql);if($res1 && $res2){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
//前面就省略啦
//php执行语句每次就一句,,,phpmyadmin也是把语句分开执行的,虽然是一并复制上去mysql_query("BEGIN");
$query = mysql_query($sql_1);
$step1 = mysql_error();
mysql_query($sql_2);
$step2 = mysql_error();
if (!$step1 && !$step2)
{
mysql_query("COMMIT"); //全部成功,提交执行结果
}
else
{
mysql_query("ROLLBACK"); //有任何错误发生,回滚并取消执行结果
}