Foros del Web » Programando para Internet » PHP »

Problema con coneccion mysqli

Estas en el tema de Problema con coneccion mysqli en el foro de PHP en Foros del Web. Hola el problema, no lo encuentro, hace correctamente mis consulta Cuando hago uso de mysqli_get_warnings y le hago un var_dump me devuelve false y da ...
  #1 (permalink)  
Antiguo 09/01/2011, 20:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 1 mes
Puntos: 10
Problema con coneccion mysqli

Hola el problema, no lo encuentro, hace correctamente mis consulta

Cuando hago uso de mysqli_get_warnings y le hago un var_dump me devuelve false y da el error

Notice: Trying to get property of non-object

opte por usar un mysqli_query("SHOW WARNINGS") lo cual no da ningun problema, supongo que la funcion mysqli_get_warnings no funciona correctamente o tiene algun bug

Saludos y gracias de antemano

Última edición por August; 09/01/2011 a las 23:25
  #2 (permalink)  
Antiguo 10/01/2011, 08:25
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Problema con coneccion mysqli

Pero... si ejecuta correctamente tus consultas, no tendría que mostrar error alguno, ¿o en este caso los errores no son lo mismo que los warnings?

Según la documentación de PHP... esa función devuelve el resultado de la consulta SHOW WARNINGS. Pero solo dice eso, no hay ejemplos ni nada .

Según un comentario de la misma página :

Código PHP:
Ver original
  1. $r = mysqli_query($db, "INSERT INTO blah SET z = '1'");
  2. if ($j > 0) {
  3.     $e = mysqli_get_warnings($db);
  4.     for ($i = 0; $i < $j; $i++) {
  5.         var_dump($e);
  6.         $e->next();
  7.     }
  8. }
http://php.net/manual/es/mysqli.get-warnings.php

Debes asegurarte primero que hayan warnings, para lo cual debes usar mysqli_warnings_count.

Ahora, sin ver el código es un tanto difícil adivinar.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 10/01/2011, 11:25
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 1 mes
Puntos: 10
Respuesta: Problema con coneccion mysqli

Cita:
Iniciado por spider_boy Ver Mensaje
Pero... si ejecuta correctamente tus consultas, no tendría que mostrar error alguno, ¿o en este caso los errores no son lo mismo que los warnings?

Según la documentación de PHP... esa función devuelve el resultado de la consulta SHOW WARNINGS. Pero solo dice eso, no hay ejemplos ni nada .

Según un comentario de la misma página :

Código PHP:
Ver original
  1. $r = mysqli_query($db, "INSERT INTO blah SET z = '1'");
  2. if ($j > 0) {
  3.     $e = mysqli_get_warnings($db);
  4.     for ($i = 0; $i < $j; $i++) {
  5.         var_dump($e);
  6.         $e->next();
  7.     }
  8. }
http://php.net/manual/es/mysqli.get-warnings.php

Debes asegurarte primero que hayan warnings, para lo cual debes usar mysqli_warnings_count.

Ahora, sin ver el código es un tanto difícil adivinar.

Saludos.
Hola spider_boy

Bueno, me refiero a que funciona bien, que muestra los errores con consultas erroneas, el problema es que mysql_get_warnings me devuelve un boolean(false) y cuando hago la consulta SHOW WARNINGS si me arroja los WARNINGS, voy a poner tres de las funciones de la clase que me hacen la coneccion, habia puesto el codigo, pero como habia arreglado el problema lo quite, ahi va de nuevo:
Código PHP:
    function ini_sql(){
        global 
$config;
        
$host=$config['db']['host'];
        
$puerto=$config['db']['puerto'];
        
$usuario=$config['db']['usuario'];
        
$password=$config['db']['password'];
        
$database=$config['db']['database'];
        
$socket=$config['db']['socket'];
        if(
$config['db']['clustering']==false){
            if(
$this->test_host($host[1],$puerto[1])==TRUE){
                
$link=$this->conectar($host[1],$usuario[1],$password[1],$database[1],$puerto[1],$socket[1]);
                return 
$link;
            }else{
                
$this->alerta_grave('1',$host[1]);
                return 
false;
            }
        }else{
            if(
$this->test_host_multi($host,$puerto)==TRUE){
                
$link=$this->conectar_cluster($config);
                return 
$link;
            }
        }
    }

    
    function 
conectar($host,$user,$pass,$db,$puerto,$socket){
        return 
$this->functions['connect']($host,$user,$pass,$db,$puerto,$socket);
        if (
mysqli_connect_error()) {
            
$this->alerta_grave('2',mysqli_connect_errno(),mysqli_connect_error(),$host);
        }
    }


    function 
write_sql($sql,$multi=0){
        
$linksql=$this->ini_sql();
        global 
$config;
        
$resulta="";
        
$msjinterno="";        
        if(
$multi==TRUE){
            
$queryfunction=$this->functions['multi_query'];
        }else{
            
$queryfunction=$this->functions['query'];
        }
        if(
$config['db']['clustering']==TRUE){
            for(
$i=1;$i<=count($linksql);$i++){
                
$queryfunction($linksql[$i],"START TRANSACTION;");
                
$resulta=$queryfunction($linksql[$i],$sql);
                if(
$resulta==FALSE){
                    
$this->alerta_grave('3',mysqli_connect_error(), mysqli_connect_errno(),$sql,$linksql[$i]);
                    
$queryfunction($linksql[$i],"ROLLBACK;");
                }else{
                    
$queryfunction($linksql[$i],"COMMIT;");
                }
                
$this->cerrar_sql($linksql[$i],$resulta);
            }
        }else{
             
$queryfunction($linksql,"START TRANSACTION; ");
            
$resulta=$queryfunction($linksql,$sql);
            if(
$resulta==FALSE){
                
$this->alerta_grave('3',mysqli_connect_error(), mysqli_connect_errno(),$sql,$linksql);
                
$queryfunction($linksql,"ROLLBACK;");
            }else{
                
$queryfunction($linksql,"COMMIT;");
            }
            
$this->cerrar_sql($linksql);    
        }
    } 
  #4 (permalink)  
Antiguo 10/01/2011, 13:24
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Problema con coneccion mysqli

Uhmmm... creo que me confundiste .

A ver... tienes el mysqli_get_warnings, que te muestra correctamente los errores, pero le haces un var_dump y te devuelve boolean(false), pero cuando haces SHOW WARNINGS si te muestra lo errores.

¿Qué es lo que quieres? ¿Que el boolean(false) desaparezca? Porque realmente no entiendo. Todo te funciona a la perfección, pero tienes un problema porque el var_dump te muestra boolean(false), así que deduzco que quieres que no lo muestre, por lo que sería tan fácil como comentar el var_dump.

Honestamente no me queda claro que pretendes .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: coneccion, mysqli
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 12:49.