Foros del Web » Programando para Internet » PHP »

PHP OO Error en una consulta en MySqli!

Estas en el tema de Error en una consulta en MySqli! en el foro de PHP en Foros del Web. Hola amigos, estoy creando una clase para manipular datos a través de una conexión de tipo mysqli. Esto es lo que tengo, solo que me ...
  #1 (permalink)  
Antiguo 07/05/2011, 09:30
 
Fecha de Ingreso: octubre-2010
Ubicación: Monterrey
Mensajes: 12
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta Error en una consulta en MySqli!

Hola amigos, estoy creando una clase para manipular datos a través de una conexión de tipo mysqli.

Esto es lo que tengo, solo que me marca un error.

Código PHP:
<?php

//error_reporting(0);

class Model
{
    public 
$hostname;
    public 
$username;
    public 
$password;
    public 
$datebase;
    public 
$query;
    public 
$mysqli;

    
    public function 
__construct($hostname$username$password$datebase)
    {
        
$mysqli = new mysqli($hostname$username$password$datebase);

        if (
mysqli_connect_errno()) 
        {
            
printf("Fallo la conexión: %s\n"mysqli_connect_error());
            exit();
        }
    }
    
    public function 
query($query)
    {
    
$mysqli $GLOBALS['mysqli'];
        if(
$mysqli->query($query) === TRUE
        {
            
printf("Table myCity successfully created.\n");
        }    
    }
}

?>

Código PHP:
NoticeUndefined indexmysqli in C:xampphtdocspruebaclassdb.class.php on line 28

Fatal error
Call to a member function query() on a non-object in C:xampphtdocspruebaclassdb.class.php on line 29 
Se que es por que la variable mysqli solo se puede usar en el constructor.

Anteriormente cuando lo hacía con MySql no había problema al manejarlo así.

Alguien que me pueda ayudar.

Gracias de antemano!
  #2 (permalink)  
Antiguo 07/05/2011, 09:37
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Error en una consulta en MySqli!

yo tengo algo como lo que quieres, te dejo solo la parte del constructor y del query
Código PHP:
Ver original
  1. #constructor
  2.     function __construct($server='',$user='',$pass='',$base=''){
  3.         if(!empty($server) && !empty($user) && !empty($base))//si le envio los parametros
  4.             $this->cnx=@mysqli_connect($server,$user,$pass,$base);
  5.         else
  6.             $this->cnx=@mysqli_connect(_LOCALHOST_,_USUARIO_,_PASS_,_DB_);//por si quiero usar constantes
  7.         if($this->cnx)//averiguamos si no hubo error y
  8.             @mysqli_query("SET NAMES 'utf8'");//Asignamos el tipo de caracteres a usar en la BD
  9.         else
  10.             $this->getErrorDeConexion();//si ocurre error se llama a la funcion que nos devuelve el error
  11.     }
  12. #ejecuta una consulta,select, insert, update o delete
  13.     public function setEjecutar($sqlQuery){
  14.         $this->resultado=mysqli_query($this->cnx,$sqlQuery);//ejecutamos
  15.         if(!$this->resultado)//verificamos si hay error
  16.             $this->getErrorDeQuery();//si lo hubo llamamos al método que me devuelve el error
  17.     }
es pero que te de una idea.
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 07/05/2011, 09:39
 
Fecha de Ingreso: octubre-2010
Ubicación: Monterrey
Mensajes: 12
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Error en una consulta en MySqli!

Cita:
Iniciado por eits Ver Mensaje
yo tengo algo como lo que quieres, te dejo solo la parte del constructor y del query
Código PHP:
Ver original
  1. #constructor
  2.     function __construct($server='',$user='',$pass='',$base=''){
  3.         if(!empty($server) && !empty($user) && !empty($base))//si le envio los parametros
  4.             $this->cnx=@mysqli_connect($server,$user,$pass,$base);
  5.         else
  6.             $this->cnx=@mysqli_connect(_LOCALHOST_,_USUARIO_,_PASS_,_DB_);//por si quiero usar constantes
  7.         if($this->cnx)//averiguamos si no hubo error y
  8.             @mysqli_query("SET NAMES 'utf8'");//Asignamos el tipo de caracteres a usar en la BD
  9.         else
  10.             $this->getErrorDeConexion();//si ocurre error se llama a la funcion que nos devuelve el error
  11.     }
  12. #ejecuta una consulta,select, insert, update o delete
  13.     public function setEjecutar($sqlQuery){
  14.         $this->resultado=mysqli_query($this->cnx,$sqlQuery);//ejecutamos
  15.         if(!$this->resultado)//verificamos si hay error
  16.             $this->getErrorDeQuery();//si lo hubo llamamos al método que me devuelve el error
  17.     }
es pero que te de una idea.
saludos.
Muchaaas Graciaas eits, si me sirvió ya me dio la idea, como la clase esta heredada de mysqli, usas el this para llamar a todos los métodos y variables de la clase nueva.

Saludos!
  #4 (permalink)  
Antiguo 07/05/2011, 09:47
 
Fecha de Ingreso: octubre-2010
Ubicación: Monterrey
Mensajes: 12
Antigüedad: 13 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Error en una consulta en MySqli!

Aquí se los dejo funcionando.

Código PHP:

<?php

//error_reporting(0);

class Model
{
    public 
$hostname;
    public 
$username;
    public 
$password;
    public 
$datebase;
    public 
$query;
    public 
$mysqli;

    
    public function 
__construct($hostname$username$password$datebase)
    {
        
$this->mysqli = new mysqli($hostname$username$password$datebase);

        if (
mysqli_connect_errno()) 
        {
            
printf("Fallo la conexión: %s\n"mysqli_connect_error());
            exit();
        }
    }
    
    public function 
query($query)
    {
        
$this->res $this->mysqli->query($query);
        
        if(!
$this->res)
          echo 
'Hay un error en la consulta';
        else
          echo 
'La consulta se efectuó con éxito';
        
    }
}

?>
  #5 (permalink)  
Antiguo 07/05/2011, 09:58
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Error en una consulta en MySqli!

Cita:
Iniciado por BeginRails Ver Mensaje
Muchaaas Graciaas eits, si me sirvió ya me dio la idea, como la clase esta heredada de mysqli, usas el this para llamar a todos los métodos y variables de la clase nueva.

Saludos!
en realidad el this me sirve para hacer referencia a los métodos y a las propiedades del mismo objeto.
estos son las propiedades que utilizo para esta clase
Código PHP:
Ver original
  1. private     $formatoError='<div style="background-color:#EAEAEA; border:1px solid #CCC; float:left; margin:10px 0; padding:10px 0;"><div style="background-color:#FFF; color:#F00; font-weight:bold; padding:0 10px; text-align:center">Lamentamos lo sucesido, Ocurrio un error</div><p style="padding:0 5px;"> %s - %s</p></div>';
  2.     private     $resultado;//guarda el resultado de una consulta select
  3.     private     $cnx;// recurso de conexion a mysql
  4.     public      $devolverError=false;//si es true almacena el error en $error y false lo termina con die
  5.     private     $error=array();//array para guardar los errores
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Etiquetas: conexion, mysql
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 03:33.