我想在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:我做的一切都好吗?如果还有其他更好的方法,请告诉我...谢谢答案 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文档,您将遇到此消息 -