Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Detectar si una conexión mysqli está activa

Estas en el tema de Detectar si una conexión mysqli está activa en el foro de PHP en Foros del Web. Hola Estoy buscando una forma de detectar si una conexión mysqli fue declarada. Pensaba usar mysqli_stat(), sin embargo esta función me da error si es ...
  #1 (permalink)  
Antiguo 18/07/2014, 16:34
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Detectar si una conexión mysqli está activa

Hola

Estoy buscando una forma de detectar si una conexión mysqli fue declarada.

Pensaba usar mysqli_stat(), sin embargo esta función me da error si es que no ha sido iniciada la conexión.

Código PHP:
if(condicion){ $con= new mysqli("*","*","*","*"); }
if(
$con->stat()){ ...codigo... }
// detiene la ejecución en esta linea si la condición es falsa. 
También pensé usar isset, pero la función se declara incluso sin conectar

Código PHP:
if(condicion){ $con= new mysqli("*","*","*","*"); }
if(isset(
$cnx)){ ...codigo... }
// imprime el código incluso si la conexión falla ya que la variable existe. 
Hay alguna otra forma de comprobar una conexión, estando o no declarado el objeto y comprobando si ha sido una conexión exitosa?

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 18/07/2014, 18:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Detectar si una conexión mysqli está activa

Cuando realizas la conexión, inmediatamente después debes de comprobar si no se produjo error alguno en la realización de la misma, para lo cual puedes utilizar la función mysqli_connect_error.

Código PHP:
Ver original
  1. $conexion = new mysqli ('server', 'user', 'password', 'db');
  2.  
  3. if ($conexion->connect_error)
  4.     exit ('Se produjo un error al intentar realizar la conexión');
  5.  
  6. //Caso contrario, ejecutas el resto del código

La función exit imprime un mensaje que el desarrollador indique y luego termina la ejecución del script, por lo que si se produce un error en la conexión, se mostrará el mensaje de error y el resto del código no se ejecutará.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 21/07/2014, 09:00
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Detectar si una conexión mysqli está activa

Gracias por la respuesta pero no cubre el primer caso (condición falsa), me explico:

Código PHP:
Ver original
  1. if(false){ $con= new mysqli("*","*","*","*"); }
  2. if(!$con->connect_error){ ...codigo... }

En este caso como la condición es falsa no se crea el objeto de conexión, por lo tanto dará un error al intentar evaluarlo con connect_error.
  #4 (permalink)  
Antiguo 21/07/2014, 09:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Detectar si una conexión mysqli está activa

Seré curioso, pero... ¿por qué te complicas inventando una sintaxis?
¿No sería más simple que acudieses al manual de referencia y probaras los ejemplos y métodos que allí te describe?
Algo como:
Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli("localhost", "usuario", "contraseña", "basedatos");
  3.  
  4. // Validar sin se produjo un error al establecer la conexion.
  5.  
  6. if ($mysqli->connect_errno) {
  7.     echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  8. }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/07/2014, 09:55
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Detectar si una conexión mysqli está activa

viendo sus ejemplos me parece que lo que el quiere es determinar si dada una condición se estableció una conexión con mysql.
Código PHP:
Ver original
  1. $con = null;
  2.  
  3. if(condicion){
  4.     $con= new mysqli("*","*","*","*");
  5. }
  6.  
  7. if(isset($con)){
  8.     //...codigo...
  9. }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 21/07/2014, 10:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Detectar si una conexión mysqli está activa

No se si realmente es funcional hacer lo que hace.
El manual dice:
Cita:
Nota:
Sólo para la sintaxis OO: Si una conexión falla se devuelve un objeto. Para comprobar si la conexión falló, use la función mysqli_connect_error() o la propiedad mysqli->connect_error como en los ejemplos anteriores.
A mi entender es complicarse innecesariamente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/07/2014, 10:11
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Detectar si una conexión mysqli está activa

es tal como dice hhs.

La conexión no siempre es necesaria, o sea es condicional, por eso no puedo usar connect_error ya que para usarlo es necesario haber creado el objeto mysqli.

Supongo que una opción es usar una suma de ambas funciones:

if(isset($con)) if(!$con->connect_error){ ...codigo... }

pero me parece muy largo...

en mysql podía usar la función is_resource($con), la cual cubría ambos casos, o sea devuelve true solo si la variable de conexión existe Y ha conectado correctamente, lamentablemente no puedo usar esto por que mysql está deprecado.
  #8 (permalink)  
Antiguo 21/07/2014, 10:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Detectar si una conexión mysqli está activa

Cita:
pero me parece muy largo...
No trates de abreviar. Usualmente lleva a códigos con errores.
Es preferible hacer un código eficaz y eficiente, que uno abreviado por donde no se debe.

Sólo puedes abreviar cuando ya tienes mucha experiencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 21/07/2014, 13:28
 
Fecha de Ingreso: julio-2014
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Detectar si una conexión mysqli está activa

ok, gracias

Etiquetas: mysql, mysqli, variable
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 07:08.