我在try/catch块中有三个sql查询。 Autocommit已关闭,所有三个查询都运行无误,我已验证(如果有任何查询失败,它不应到达提交行,但我已通过xdebug验证了它,一次只执行一行代码)。当代码到达commit()函数调用时,mysqli返回false,但没有错误消息。如果前面的查询全部正常工作,提交失败怎么办?Mysqli :: commit()返回false,但没有错误信息
这基本上是代码的外观:
try{
$mysqli->autocommit(false);
$sql1 = "insert into...";
$mysqli->query($sql); // Works!
if($mysqli->error)
{
$mysqli->rollback();
throw new Exception....
}
$sql2 = "insert into...";
$mysqli->query($sql); // Works!
if($mysqli->error)
{
$mysqli->rollback();
throw new Exception....
}
$mysqli->commit(); // Fail
}
受影响的表的存储类型是innoDB,对不对? – raina77ow
'$ mysqli-> autocommit(false)'成功了吗?尝试提交后,什么是'$ mysqli-> error'? – Oswald
表是innoDB,是的。 autocommit的作品。 $ mysqli-error是空的,没有错误信息,没有错误代码,什么都没有。 – user3305609