Manejo de errores en MySQL con CodeIgniter

codeigniter_mysql_errorsCuando tenemos un error conectando o realizando operaciones con la base de datos (MySQL) usando CodeIgniter, lo normal es que el sistema nos muestre un mensaje por defecto con el código, descripción y query ejecutado, tal que así:

error_db_ci

Esta página de error se puede personalizar editando la plantilla /errors/error_db.php en nuestra carpeta de la aplicación. El problema es que este mensaje se mostrará en lugar de nuestra vista o en medio de ella, y además se mostrará siempre a menos que desactivemos la opción de debug de la base de datos, y si lo hacemos nuestra aplicación fallará silenciosamente, no tenemos forma de capturar este error y realizar las operaciones que nos convengan, lo cual sería especialmente útil cuando hacemos peticiones ajax.

Para solucionar esto existen dos métodos no documentados en la clase DB que nos permite capturar el mensaje de error y el número:
$this->db->_error_message() y $this->db->_error_number().

Estos métodos son envoltorios de las funciones mysql_error() y mysql_errno() de php. En la documentación de mysql podemos encontrar el listado de códigos de errores que nos devuelve mysql_errno() (y por lo tanto $this->db->_error_number()), por si nos interesa realizar distintas operaciones según el tipo de error ocurrido.

Como ejemplo os mostraré una forma sencilla de gestionar estos mensajes de error:

En primer lugar debemos desactivar el debug de la base de datos poniendo la opción $db[‘default’][‘db_debug’] a FALSE en el archivo /config/database.php.

Después en nuestro método del modelo, tras el query a la BD podemos poner:

if($data['error'] = $this->db->_error_message());
return $data;

En el controlador recogeremos esta variable devuelta y la pasaremos a la vista, y en la parte de la vista que nos interese pondremos:

<?php if(isset($error)) echo '<div class="error">'.$error.'</div>';?>

De la misma manera podemos manejar los errores vía ajax devolviendo esta variable codificada con json en nuestro controlador y gestionándola en el javascript de la vista.

Finalmente, ante la avalancha de peticiones espero volver en breve con un último videotutorial sobre CodeIgniter.

Enlaces

114 comentarios para “Manejo de errores en MySQL con CodeIgniter”

  1. Yoga With Your Child

    blog topic

  2. https://sweetchoice.click

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  3. Yoga Meditation

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  4. Cervical spondylosis and yoga

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  5. intimatefriend.click said in a blog post

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  6. new content from willbefine.click

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  7. Yoga Mat Cleaning

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  8. Yoga helps cure sciatica

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  9. Thewayofspirit published an article

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  10. yoga 3 people

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  11. information from gooncloud.click

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  12. Yoga poses dice:

    Yoga poses

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  13. click the next website page

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

  14. read page dice:

    read page

    Manejo de errores en MySQL con CodeIgniter « David Rojas – Diseño y desarrollo web

Deja un comentario

Time limit is exhausted. Please reload the CAPTCHA.

RSS iTunes podcast Twitter

Categorías

Enlaces

Archivos