2013-07-29 12 views
6

Sono nuovo di CodeIgniter, PHP e MySQL. Voglio gestire gli errori generati dal DB. Da uno dei post di Stackoverflow, sapevo che seguendo la dichiarazione si può cogliere l'errore.Come catturare errori DB in CodeIgniter PHP

$this->db->_error_message(); 

Ma non riesco a capire la sintassi esatta dell'utilizzo di quello. Supponiamo che io voglio aggiornare i record di tabella denominata "table_name" con la seguente dichiarazione:

$array['rank']="8"; 
$array['class']="XII"; 
$this->db->where('roll_no',$roll_no); 
$this->db->update("table_name", $array); 

Qui nel codice sopra voglio prendere l'errore DB ogni volta che si verifica una violazione livello DB cioè o il nome del campo non è valido o si verifica una violazione di un vincolo univoco. Se qualcuno mi aiuta a risolvere il problema, sarei davvero grato. Grazie.

+0

Hai provato prova. . blocco di blocco? Catch (Exception $ e) {echo $ e-> getMessage(); } –

risposta

6

CodeIgniter ha funzioni per esso

$this->db->_error_message(); 
$this->db->_error_number(); 


if(!$this->db->update("table_name", $array)) 
{ 
    $this->db->_error_message(); 
    $this->db->_error_number(); 
} 
+0

Conosco queste due funzioni. Potresti dirmi dove dovrei inserirlo nel codice sopra e come? – Joy

+0

@joy controlla la mia modifica. –

+0

non capisco come applicare o utilizzare questo "$ this-> db -> _ error_message();" quindi puoi aiutarmi? @RajeevRanjan –

5

È possibile eseguire il debug l'errore di database di configurazione del database in (config/database.php) come questo:

$db['default']['db_debug'] = TRUE; 

Maggiori informazioni leggere here

Inoltre puoi usare Profiler per vedere tutte le query e la loro velocità. Nel controller che si può mettere questo:

$this->output->enable_profiler(TRUE); 

Maggiori informazioni leggere here

1

Su Codeigniter versione 2,

$this->db->_error_message(); 
$this->db->_error_number(); 

Su Codeigniter versione 3,

$db_error = $this->db->error(); 
echo '<pre>';print_r($db_error);echo '</pre>'; 
Problemi correlati