0
假設我在mysql中有一個名爲「persons」的表,它有兩列: Name,idNumber。他們都是主要關鍵。 表最初是空的,我執行下面的代碼:PDOExceptions和事務
try {
$db->beginTransaction();
$db->query("INSERT INTO persons (Name, idNumber) VALUES ('Alex', 10)";
$db->query("INSERT INTO persons (Name, idNumber) VALUES ('John', 10)";
$db->commit();
} catch (PDOException $e) {
$db->rollBack();
echo $e->getMessage();
}
Ofcourse這不應該工作,因爲我們插入相同的ID號,10,兩個人。我的問題是,在第二次插入捕捉後MySQL中引發的錯誤是否會產生PDOException?如果不是的話,如果這個事件發生,我該如何停止交易?在php代碼中。
你測試了嗎? – 2014-11-24 14:18:06
爲什麼不運行它並嘗試一下?當然,您必須先啓用PDO中的ENABLE例外。默認情況下,PDO使用ERRMODE_SILENT,不會發出任何錯誤信號。 – 2014-11-24 14:18:11
你需要嘗試一下。這就是說,我使用了準備好的語句並測試了這個:if($ sth-> execute()){}其中$ sth os $ db。你可以測試我想的查詢,如果沒有(false),你可以獲得錯誤 – 2014-11-24 14:19:03