ラボ > PHPFuelPHP:DB関連、エラー絡み

fuephpでトランザクション処理(try-catch())

頻繁に使う記述なんだけど、なにげに忘れやすい。本当は、いつも前のソースからコピペしているから覚えていない・・・。

作成日:2018-02-23, 更新日:2019-10-27

トランザクション無しのただのtry-catch

throwしたときだけでなく、Warning、NOTICE系のエラーもcatch()に入る。

try {
   if ( 〇〇〇 ) {
      throw new Exception(〇〇〇);
   }
}
catch (Exception $e) {
   // echo $e->getMessage();
}

try-catchにトランザクションを組み込む

・DBのテーブルが「InnoDB」のときのみ
※「MyISAM」だと「ロールバックされない!」ってコトになる。

try {
   $db = \Database_Connection::instance();
   $db->start_transaction();
   
   if ( 〇〇〇 ) {
      throw new Exception(〇〇〇);
   }
   
   $db->commit_transaction();
}
catch (Exception $e) {
   $db->rollback_transaction();
   // echo $e->getMessage();
}

FuelPHPでエラー

▼「\」をつけておけばOK

try {
  throw new \Exception(〇〇〇);
}
catch (\Exception $e) {
}

関連項目

PHPで例外処理(try-catch())