2013-10-07 60 views
1

Mysqli文档指出,如果调用autocommit(false)返回true,则说明它已成功禁用自动提交查询。
不过,如果我尝试回滚事务,创建如下代码,信息仍将被删除。Mysqli回滚不起作用

$dbConn= new mysqli($host, $user, $pass, $db) or die('Could not connect'); 
$dbConn->autcocommit(false); //returns true 
$dbConn->query($deleteQuery); 
$dbConn->query($deleteQuery2); 
$dbConn->rollback(); 

在这种情况下会出现什么问题?

+2

您的表[存储引擎](http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html)是否支持事务? –

+0

我查过了,表格配置了MyIsam,显然不是。但是,MySqli的自动提交功能的返回没有指出这个问题? – Cloud

+0

你在连接上设置自动提交,而不是在特定的表上,所以基本上功能不能指出这个问题。所有这个函数所做的就是运行一个查询,比如'SET autocommit = {0 | 1}'。 –

回答

0

回滚仅适用于InnoDB表而非MyISAM。确保你在$ deleteQuery(查询)中使用的表是InnoDB。