2

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

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”查询之前,我怎么能执行这样的检查?

提前致谢

PS:我做的一切正确吗?请让我知道是否还有其他更好的方法...谢谢

4

1 回答 1

1

如果您正在执行DELETE命令,您将能够通过调用该mysql_affected_rows()函数来查看是否有任何受影响的行。

mysql_affected_rows — 获取先前 MySQL 操作中受影响的行数

甚至在文档中提到了与交易一起使用-

注意:事务如果您使用事务,则需要在 INSERT、UPDATE 或 DELETE 查询之后调用 mysql_affected_rows(),而不是在 COMMIT 之后。


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

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

于 2012-12-22T11:27:02.897 回答