2012-02-14 31 views
7

Lo que quiero hacer es algo como esto:Tratar con claves duplicadas en CodeIgniter mysql insertar

function registerUser($username, $password){ 

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

} 

Sin embargo, por el momento si hay una copia de la llave, entonces no es dejar a llegar al poco _error_number(). Su muestra un error como este:

enter image description here

¿Cómo dejo de CodeIgniter utilizado para rescatar con un error y pasando el número de error para mí para hacer frente de manera adecuada?

Gracias

Respuesta

12

Puede acceder a los mensajes de error de MySQL en CodeIgniter usando:

$this->db->_error_message(); 

Al parecer DB_DEBUG necesita ser establecido en false en el archivo de configuración de base de datos:

Asegúrese DB_DEBUG se establece a FALSO en el archivo de configuración de la base de datos, o ejecución se detendrá cuando se produce un error mysql (no se lanza, se justs salidas del ph p intérprete)

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

+0

Gracias, sé que, estoy usando _error_number() para obtener el número de error en el código de seguridad. Sin embargo, no está llegando a su destino, su abandono antes de la mano e imprimiendo un error. –

+0

Ver mi solución revisada. Tenga en cuenta que ya no podrá ver los mensajes de error de MySQL sin utilizar _error_message()/_ error_number() – citizenen

+0

ah bien, bien encontrado, no pude encontrarlo en ninguna parte. :) –

8

Sugerencia:

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

$this->db->db_debug = FALSE; 

RUN QUERY HERE 

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

buen enfoque sin cambiar las configuraciones –

Cuestiones relacionadas