日期:2014-05-17  浏览次数:20455 次

PHP pdo 事务无法回滚
public function submit(){
try {
$this->beginTransaction();
$this->exec('update people set age=2');
$this->exec('INSERT INTO course (course,num) VALUES ("数学",100)');
$this->commit();
}catch (Exception $e){
$this->rollBack();
}
}

这是小弟的事务模块大致如上,数据库引擎为InnoDB,但不知道为何SQL如果执行错误,pdo始终不执行回滚,请高人指定,小弟感激不尽。。。

------解决方案--------------------
不要用try试试,我觉得这里不会抛出异常
PHP code



$this->beginTransaction();
$this->exec('update people set age=2');

//$step1 = mysql_error();//你的类里,改成如果执行sql错误,获取错误代码,相应的函数

$this->exec('INSERT INTO course (course,num) VALUES ("数学",100)');

//$step2 = mysql_error();


if (!$step1 && !$step2)
{
 $this->commit();
}
else
{
 $this->rollBack();
}

------解决方案--------------------
同意2楼,
两条语句应该只会返回true或false

用if判断就可以了,,不要用 try