2014-06-18 81 views
1

我正在使用HMVC。我的問題很簡單。我們如何捕捉活動記錄中的錯誤? 我們如何從模型(活動記錄)將自定義錯誤返回給控制器?Active Record中的自定義錯誤Codeigniter

事實上,MSN列是唯一的,這樣,當我輸入重複的值,那麼它的顯示錯誤,如

錯誤編號:1062

重複條目「3696003284」關鍵「MSN」

但我想顯示自定義錯誤而不是此。

我簡單的代碼是:

function insert_data($msn_number, $date_val, $min_val, $max_val, $avg_val,$counter) 
{ 
    for($i=0;$i<$counter;$i++) 
    { 
     $data = array(
      'msn'  => $msn_number[$i], 
      'date' => $date_val[$i], 
      'min_val' => $min_val[$i], 
      'max_val' => $max_val[$i], 
      'average' => $avg_val[$i] 
     ); 
     $result = $this->db->insert('storage_data', $data); 
     if(!isset($result)) 
     { 
      echo "custom Error"; 
      } 

    } 
} 

}

我想知道這個問題的答案,請幫幫我!

+0

我不知道我是如何發現這個錯誤的? –

+0

任何想法,如果存在,我可以檢查查詢中是否存在'msn',然後更新該行,否則插入新行? –

回答

0

你可以試試這個:

$result = $this->db->insert('storage_data', $data); 
if (!$result) { 
    $data['msg'] = $this->db->_error_message(); 
    $this->load->view('viw_db_error', $data); // Create a viw_db_error.php view 
} 

確保DB_DEBUGapplication/config/database.php文件設置爲FALSE,或如果發生錯誤mysql執行將被暫停。

更新:

另外,您可以查詢您插入一個新的記錄每一次出現,但因爲你是做一個循環內這將是非常昂貴的,它會發送許多查詢/請求:

$q = $this->db->query("select msn from storage_data where msn = $msn_number[$i]"); 
if($q->num_rows()) { 
    // It already exists so maybe display a message 
} 
+1

謝謝WEREWOLF的回覆,但實際上我需要任何其他方式而不使DB_DEBUG FALSE? –

+0

我正在使用HMVC。 –

+0

感謝您的關注!但以這種方式查詢將運行100次,所以我認爲這會使系統非常慢! –

相關問題