我真的不明白如何在DBAL中執行交易Doctrine DBAL Transactions
我有以下腳本正在根據行的id更新列。我放了一個不存在於表中的僞造ID(因此使得更新無法進行),但是儘管它是一個事務,但第一次更新仍被提交。如果其中一個失敗,我希望所有的交易都會失敗。
$conn -> beginTransaction();
try{
$try = $conn->prepare("update table set column = '123' where id = 0"); //column exists
$try->execute();
$try = $conn->prepare("update table set column = '123' where id = 1"); //column exists
$try->execute();
$try = $conn->prepare("update table set column = '123' where id = 120"); //column does not exists
$try->execute();
$try = $conn->commit();
}
catch(Exception $e) {
$try = $conn->rollback();
throw $e;
}
預期的結果,沒有更新,因爲行使用id = 120不存在 真實結果,所有行除了不存在的行更新。
我提前道歉,但面向對象的編程仍然是我的南極。
它看起來像$ try = $ conn-> commit();不會把$試着變成一個布爾...沒有什麼真的似乎發生? – Mallow