我在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