2017-08-16 72 views
0

內部控制器我想打一個插入到數據庫:如何捕獲數據庫異常?

public function insertAction() { 

     try { 
      $this->load->model('action'); 
      $_POST['laDate'] = $this->input->post('ladate_') == '' ? '' : $this->dates->convertDateToFormatBase($this->input->post('ladate_'), ''); 
      $_POST['dateCreation'] = "now()"; 
      $action_id = $this->action->ajouter($_POST); 
      if (isset($_POST['verificateurs'])) { 
       $this->load->model('actionVerificateur'); 
       $this->actionVerificateur->inserer($action_id, $_POST['verificateurs']); 
      } 
      $this->load->view('ajax/insertAction', array('action_id' => $action_id)); 
     } 
     catch (Exception $e) { 
      $this->load->view('ajax/insertAction', array('action_id' => 0)); 
     } 

    } 

有對數據庫表的一些列的unique約束。所以當這個約束被違反時,我想抓住這個異常。但似乎我的代碼沒有抓住它!那麼如何捕捉異常呢?

+0

如果您使用「Transactions」,該怎麼辦。我從來沒有聽說過在框架中使用TRY CATCH。 Cz框架幫助事情變得簡單。但你還在做老 –

+0

是的,在這裏老派哈哈:) – pheromix

+1

看看這個,這幫了我更早。希望它也會對你有所幫助。 https://stackoverflow.com/questions/15858372/codeigniter-try-catch-is-not-working-in-model-class –

回答

0

我發現了一個解決方法:我測試瞭如果$this->db->insert_id()是數字!因爲在發生異常的情況下,返回的值是一個開始於<DOCTYPE>的html代碼。