交易MySql和php

时间:2012-11-08 11:00:58

标签: php mysql transactions

我很困惑通过php脚本运行事务。 在我的MySql自动提交设置为1, 但是当我运行一个脚本时

ex:mysql_query(“START TRANSACTION”);

$sql="INSERT INTO 
`address`(`Address_Id`, 
`Address_Line1`, 
`Address_line2`, 
`Zip`, 
`Created_By`,
 `Created_Date`, 
 `Updated_By`, 
 `Updated_Date`) 
VALUES ('2','this is test1','test2','210','SYSTEM','NOW()','SYSTEM','NOW()')";

mysql_query($sql);

当我不提交时,表中插入的记录为零。 只有在我发出commit命令时才会出现记录。

另请告诉我如果在php脚本中我启动事务然后不提供回滚或提交语句会发生什么

2 个答案:

答案 0 :(得分:0)

http://dev.mysql.com/doc/refman/5.5/en/commit.html

  

默认情况下,MySQL在启用自动提交模式的情况下运行。这意味着只要执行更新(修改)表的语句,MySQL就会将更新存储在磁盘上以使其永久化。

但是如果你明确指定START TRANSACTION - 那么它就不会被考虑在内,所以你在一个应该提交的事务中工作。

答案 1 :(得分:0)

尝试这样做。

mysql_query("BEGIN");

        $query="";
        $result=mysql_query($query);

        if($result==0)
        {
            mysql_query("ROLLBACK");
           echo $error_message;
          // mysql_query($query_setId);
           die();
        }

    mysql_query("COMMIT");