48


14

Codeigniter-アクティブレコードの使用時のエラー処理

私は私のcodeigniterサイト用にいくつかのモデルをまとめていますが、Active Recordシステムを使用しているときに発生する可能性のあるエラーを処理する方法のドキュメントには言葉がありません。

このドキュメントでは、比較的複雑なクエリとともにCRUDを実行する方法を示していますが、エラー処理については説明していません。 クイックGoogle検索を実行しましたが、Active Recordクラスは例外をスローしないようです。 これは事実ですか? キャッチしようとしないで…​

それでは、codeigniterでデータベースエラーを処理するためにどのようにコーディングしますか? (接続の失敗、キーの重複、参照整合性の破損、切り捨て、不正なデータ型など)

2 Answer


58


アクティブレコードクラスを使用しているかどうかにかかわらず、 `$ this→ db→ _ error_message()`と `$ this→ db→ _ error_number()`を使用してデータベースエラーにアクセスできます。

mysqlデータベースを使用している場合、これらの関数はそれぞれ `mysql_error()`と `mysql_errno()`と同等です。 これらの関数は、使用しているデータベースのデータベースドライバーのソースコードを調べることで確認できます。 それらはシステム/データベース/ドライバーにあります。

そのため、クエリを実行した後、次のような方法でエラーを確認できます。

if ($this->db->_error_message()) \\handle error


12


CodeIgniterサポートフォーラムから直接:

$res = $this->db->query($str);

if (!$res) {
  // if query returns null
  $msg = $this->db->_error_message();
  $num = $this->db->_error_number();

  $data['msg'] = "Error(".$num.") ".$msg;
  $this->load->view('customers_edit_view',$data);
}

CIアプリの設定ファイルに移動して、以下を設定することにより、アクティブレコードエラーを記録することもできます。

$config['log_threshold'] = 1;