ホームページ  >  に質問  >  本文

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


<?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 "操作が失敗しました";

}

?>


陈老师陈老师2368日前1187

全員に返信(1)返信します

  • NULL

    NULL2018-05-21 10:55:04

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

    返事
    1
  • 陈老师

    はい、問題が見つかりました。ありがとうございます。

    陈老师 · 2018-05-21 10:55:46
  • キャンセル返事