2017-08-16 2 views
0

Innerhalb einer Steuerung möchte ich einen Einsatz in der Datenbank machen:Wie kann man Datenbankausnahmen abfangen?

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)); 
     } 

    } 

Es gibt eine unique Beschränkung auf einige Spalten der Datenbanktabelle. Wenn diese Einschränkung verletzt wird, möchte ich die Ausnahme abfangen. Aber es scheint, dass mein Code es nicht fängt! So, wie man die Ausnahme fängt?

+0

was ist, wenn Sie 'Transaktionen' verwenden. Ich habe noch nie von TRY CATCH im Framework gehört. Cz Framework hilft einfach. Aber du machst alt immer noch –

+0

ja, alte Schule hier lol :) – pheromix

+1

Check out, das half mir früher. Hoffe, es wird dir auch hilfreich sein. https://stackoverflow.com/questions/15858372/codeignter-try-catch-is-not-working-in-model-class –

Antwort

0

Ich habe einen Workaround gefunden: Ich habe getestet, ob $this->db->insert_id() numerisch ist! weil in dem Fall, dass eine Ausnahme ausgelöst wird, der zurückgegebene Wert ein HTML-Code ist, der mit <DOCTYPE> beginnt.

Verwandte Themen