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

解决方案 »

  1.   


    $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貌似不能那样。
      

  2.   

    事务是分开的:
    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 '数据回滚。';
      

  3.   


    //前面就省略啦
    //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"); //有任何错误发生,回滚并取消执行结果
    }
      

  4.   

    我觉得主要应该是phpmyadmin的缘故,因为之前我在用ORACLE作为数据库的时候,这样的写法是可以执行的,呵呵