2012-02-14 8 views
7

Quello che voglio fare è qualcosa di simile:Trattare con chiavi duplicate in codeigniter mysql inserire

function registerUser($username, $password){ 

$this->db->insert('tblUsers', array('username'=>$username, 'password'=>md5($password))); 
if($this->db->_error_number()==1062){ 
    return "DUPLICATE"; 
} 
return true; 

} 

Tuttavia, al momento, se v'è una chiave duplicata allora non lasciarmi arrivare al bit _error_number(). La sua visualizzazione di un errore come questo:

enter image description here

Come faccio a smettere CodeIgniter da salvataggio con un errore e passando il numero di errore a me per affrontare in modo adeguato?

Grazie

risposta

12

È possibile accedere a messaggi di errore MySQL in Codeigniter utilizzando:

$this->db->_error_message(); 

Apparentemente DB_DEBUG deve essere impostata su false nel file di database di configurazione:

Assicurarsi DB_DEBUG è impostato a FALSE nel file di configurazione del database, o l'esecuzione di si fermerà quando si verifica un errore mysql (non viene generato, giustifica le uscite dal ph p interprete)

Link: http://codeigniter.com/forums/viewthread/79950/#413830

+0

Grazie, lo so, sto usando _error_number() per ottenere il numero di errore nel codice di cui sopra. Tuttavia, non sta arrivando a lì, il suo ammaraggio prima mano, e la stampa di un errore. –

+0

Vedere la mia soluzione rivista. Nota che non sarai più in grado di vedere i messaggi di errore MySQL senza usare _error_message()/_ numero_errore() – citizenen

+0

ah bello, ben trovato, non ho potuto trovarlo da nessuna parte. :) –

8

Suggerimento:

$orig_db_debug = $this->db->db_debug; 

$this->db->db_debug = FALSE; 

RUN QUERY HERE 

$this->db->db_debug = $orig_db_debug; 
+2

buon approccio senza modificare le configurazioni –

Problemi correlati