检查事务的状态 - MySQL和PHP

时间:2012-12-22 11:21:14

标签: php mysql transactions

我想在MySQL中使用Transactions,我的问题是如何检查查询是否成功提交?我的疑问是:

mysql_query("START TRANSACTION");
$query_1 = mysql_query("DELETE FROM BLAH WHERE BLAH");
$query_2 = mysql_query("DELETE FROM BLAH WHERE BLAH");
mysql_query("COMMIT");

据我所知,上面的代码执行了事务,但我想检查查询是否成功提交,所以:

    mysql_query("START TRANSACTION");
    $query_1 = mysql_query("DELETE FROM BLAH WHERE BLAH");
    $query_2 = mysql_query("DELETE FROM BLAH WHERE BLAH");
    if($query_1 && $query_2){
       mysql_query(COMMIT);
    }else{
       mysql_query(ROLLBACK);
    }

但我在某处看到,在事务中,当我们调用“COMMIT”时查询会提交,因此上面的代码不起作用,因为当我们检查$query_1 && $query_2时,实际上没有任何内容提交给db,因为它是在“COMMIT”查询之前,我如何执行此类检查?

提前致谢

P.S:我做的一切都好吗?如果还有其他更好的方法,请告诉我...谢谢

1 个答案:

答案 0 :(得分:1)

如果您正在执行DELETE命令,则可以通过调用mysql_affected_rows()函数查看是否存在任何受影响的行。

  

mysql_affected_rows - 获取之前MySQL操作中受影响的行数

文档中甚至有mention of use in conjunction with transactions -

  

注意:交易如果您正在使用交易,则需要致电   在INSERT,UPDATE或DELETE查询之后没有mysql_affected_rows()   在COMMIT之后。


此处应注意您使用的是旧版本的数据库连接。请参阅与mysql_*命令相关的任何页面上的php文档,您将遇到此消息 -

  

自PHP 5.5.0起,此扩展程序已弃用,并将在中删除   未来。相反,应使用MySQLiPDO_MySQL扩展名。