私は本当に行のIDに応じて、列を更新、私は次のスクリプトが起こっているDBAL教義DBAL取引
で取引を行う方法を理解していません。私はテーブルに存在しない偽のIDを入れます(したがって、更新を行うことはできません)が、最初の更新はトランザクションであるにもかかわらずコミットされます。そのうちの1つが失敗した場合、すべてのトランザクションが失敗すると思います。
$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を持つ行が 実結果が存在しないので、無更新は、すべての行は、非existant行を除いて更新されます。
私は前もってお詫びしますが、オブジェクト指向プログラミングはまだ私にとっては南極です。
$ try = $ conn-> commit(); $をブールにしようとしない...本当に何も起こりそうにない? – Mallow