トランザクション メカニズムを設定し、意図的に 2 番目の SQL ステートメントが間違っているように設定しました。最終的に最初の SQL ステートメントが実行されたのはなぜですか? トランザクションはロールバックされ、まったく実行されないはずではありませんか?
陈老师
陈老师 2018-05-19 12:55:01
0
1
1243


<?php

$pdo=new PDO('mysql:host=localhost;dbname=student','root','root');

try{

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo->beginTransaction();

//最初の SQL ステートメント

$sqla="delete from chen where id=14";

$pdo->exec($sqla) ;

//2日目のSQL文

$sqlb="delete froms chen where id=15"; //fromは意図的に間違って書いています

$pdo->exec($sqlb);


}catch(Exception $e){

$pdo ->rollBack();

$e->getMessage();

echo "操作が失敗しました";

}

?>


陈老师
陈老师

全員に返信(1)
NULL

データベースエンジンはMyISAMですか? InnoDBに変更してみてください

いいねを押す +1
  • 返事 はい、問題が見つかりました。ありがとうございます。
    陈老师 著者 2018-05-21 10:55:46
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート