Foros del Web » Programando para Internet » PHP »

Mantener conexión abierta

Estas en el tema de Mantener conexión abierta en el foro de PHP en Foros del Web. Vuelta con otra duda simple con mysqli.. El problema que tengo es que al iniciar la conexión, y posteriormente tratar de realizar una consulta con ...
  #1 (permalink)  
Antiguo 30/03/2013, 13:04
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 10 meses
Puntos: 9
Mantener conexión abierta

Vuelta con otra duda simple con mysqli..

El problema que tengo es que al iniciar la conexión, y posteriormente tratar de realizar una consulta con ella, la variable no está definida.

¿Hay algún modo de que esté definida en todos los archivos donde incluya la clase? He probado con global $MySQLi y con $_SESSION['MySQLi'], pero quería saber si hay algún modo más eficientemente..

Código PHP:
class core {
    
    public function 
__construct() 
    {
    
        
$MySQLi mysqli_connect('localhost''root''asdasd''database'); 
        
    }
}

$core = new core();

$test mysqli_fetch_assoc(mysqli_query($MySQLi"SELECT * FROM settings")); 
  #2 (permalink)  
Antiguo 30/03/2013, 16:52
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Mantener conexión abierta

Cita:
Iniciado por SeaPirates Ver Mensaje
¿Hay algún modo de que esté definida en todos los archivos donde incluya la clase?
No es un problema con mysqli.Sino con cómo usas clases.Si lo que esperas es que "una variable esté definida en todos los archivos donde incluyes la clase donde la usas", es que estás programando orientado a "scripts".
Lo que necesitas es :
1) Hacer que la conexión sea una variable miembro de la clase.
2) Un método que devuelva dicha variable miembro.
  #3 (permalink)  
Antiguo 30/03/2013, 18:50
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: Mantener conexión abierta

Cita:
Iniciado por dashtrash Ver Mensaje
No es un problema con mysqli.Sino con cómo usas clases.Si lo que esperas es que "una variable esté definida en todos los archivos donde incluyes la clase donde la usas", es que estás programando orientado a "scripts".
Lo que necesitas es :
1) Hacer que la conexión sea una variable miembro de la clase.
2) Un método que devuelva dicha variable miembro.
¿Sería optimo utilizar una clase así?

Código PHP:
class MySQLiData {

    public function 
__construct() 
    {
    
        
$this->MySQLi_SERVER 'localhost';
        
$this->MySQLi_USER 'root';
        
$this->MySQLi_PASSWORD '';
        
$this->MySQLi_DATABASE 'database';
        
        
$this->MySQLi mysqli_connect($this->MySQLi_SERVER$this->MySQLi_USER$this->MySQLi_PASSWORD$this->MySQLi_DATABASE); 
        
        if(!
$this->MySQLi)
        {
            die(
'MySQL Connection Database Error nº: ' mysqli_connect_errno());
        }    
        
    }
    
    public function 
getInstance()
    {
 
        
$this->Instance $this->MySQLi;
        return 
$this->Instance;
        
    }
    
    public function 
Query($sql
    {

        
$this->Query mysqli_query($this->MySQLi$sql);
        
        if(!
$this->Query)
        {
            echo 
'No se ha podido realizar la consulta';
        } 
        else 
        {
            return 
$this->Query;
        }
        
    }
    
    public function 
FetchAssoc($sql$field
    {
    
        
$this->Get mysqli_fetch_assoc(mysqli_query($this->MySQLi$sql));
        
        if(!
$this->Get)
        {
            echo 
'No se ha podido realizar la consulta';
        } 
        else 
        {
            echo 
$this->Get[$field];
        }
        
    }
    
    public function 
NumRows($sql)
    {
    
        
$this->NumRows mysqli_num_rows(mysqli_query($this->MySQLi$sql));
        
        echo 
$this->NumRows;
        
    }
    
}

$MySQLi = new MySQLiData(); 

Etiquetas: abierta, mysql, select, sql
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:20.