Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Errores con MySQLi

Estas en el tema de Errores con MySQLi en el foro de PHP en Foros del Web. Hola Gente, Una pregunta curiosa: Estoy trabajando con la extensión MySQLi de PHP de la manera OO, y pues todo normal. Lo que he tratado ...
  #1 (permalink)  
Antiguo 07/11/2013, 16:30
Avatar de keypyhh  
Fecha de Ingreso: noviembre-2012
Ubicación: Cartagena de Indias
Mensajes: 12
Antigüedad: 11 años, 5 meses
Puntos: 1
Errores con MySQLi

Hola Gente,

Una pregunta curiosa: Estoy trabajando con la extensión MySQLi de PHP de la manera OO, y pues todo normal. Lo que he tratado de hacer es que en caso de que la conexión fallé al momento de abrirla, de alguna manera yo sepa que hubo un error. Ejemplo del código que tengo para conectarme:

Código PHP:
Ver original
  1. protected function abrirConexion() {
  2.         $this->conexion = new mysqli('localhost', 'root','root', 'latabla');
  3.         if (!$this->conexion) {
  4.             return false;
  5.         } else {
  6.             return true;
  7.         }
  8.     }

Cuando por ejemplo introduzco una contraseña erronéa para el usuario, el script o la ejecución de PHP se detiene en esa linea donde declaro la instancia de mysqli y no continua la ejecución (me doy cuenta por la consola de desarrollador de Chrome - F12) , y no me retorna el false que se supone que debe retornar debido a que la conexión no está hecha. He intentado con el try-catch y ni aún asi la función retorna el false.

Código PHP:
Ver original
  1. protected function abrirConexion() {
  2.         try{
  3.              $this->conexion = new mysqli('localhost', 'root','root', 'latabla');
  4.              if (!$this->conexion) {
  5.                   return false;
  6.              } else {
  7.                   return true;
  8.              }
  9.         } catch (Exception $e){
  10.              return false;
  11.         }
  12.     }

¿Alguna manera de yo saber el error y retornar el false sin que se detenga la ejecución?
  #2 (permalink)  
Antiguo 07/11/2013, 17:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Errores con MySQLi

Cita:
Iniciado por keypyhh Ver Mensaje
Código PHP:
Ver original
  1. protected function abrirConexion() {
  2.         try{
  3.              $this->conexion = new mysqli('localhost', 'root','root', 'latabla');
  4.              if (!$this->conexion) {
  5.                   return false;
  6.              } else {
  7.                   return true;
  8.              }
  9.         } catch (Exception $e){
  10.              return false;
  11.         }
  12.     }

¿Alguna manera de yo saber el error y retornar el false sin que se detenga la ejecución?
Implementando el try.. catch apropiadamente con mysqli_sql_exception: te dejo la liga a la documentación: http://php.net/manual/en/class.mysqli-sql-exception.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 07/11/2013, 19:05
Avatar de keypyhh  
Fecha de Ingreso: noviembre-2012
Ubicación: Cartagena de Indias
Mensajes: 12
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Errores con MySQLi

Me ayudo lo que pusistes, pero tambien faltaba algunas configuraciones especiales, las cuales apliqué poniendolas en la misma clase al principio, y si pude conseguir lo que quería:

Código HTML:
define("MYSQL_CONN_ERROR", "No se pudo conectar");
mysqli_report(MYSQLI_REPORT_STRICT);
Con esas dos lineas si pude hacer que retornara false dicha función en caso de error:

Código PHP:
Ver original
  1. protected function abrirServidor() {
  2.         try {
  3.             $this->conexion = new mysqli('localhost', 'root', 'root');
  4.             if (!$this->conexion) {
  5.                 return false;
  6.             } else {
  7.                 return true;
  8.             }
  9.         } catch (mysqli_sql_exception $e) {
  10.             return false;
  11.         }
  12. }

Gracias por la ayuda!

Info tomada de: http://www.php.net/manual/es/class.mysqli-sql-exception.php

Etiquetas: errores, mysql, mysqli, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:51.