Foros del Web » Programando para Internet » PHP »

PHP OO Fatal error: Call to a member function query() on a non-object

Estas en el tema de Fatal error: Call to a member function query() on a non-object en el foro de PHP en Foros del Web. Hola a todos. Estoy teniendo un problema con mi código y llevo un par de dias intentando solucionarlo, pero no he podido conseguirlo. Esta es ...
  #1 (permalink)  
Antiguo 04/09/2015, 16:23
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Fatal error: Call to a member function query() on a non-object

Hola a todos.
Estoy teniendo un problema con mi código y llevo un par de dias intentando solucionarlo, pero no he podido conseguirlo.

Esta es mi conexión con la base de datos:

Código PHP:

abstract class ConectarBd{
    const 
ERROR_CONNECTION "No se pudo conectar a la base de datos.";
    private static 
$_host$_user$_pass$_database$_charset;
    protected static 
$_instance;

    protected function 
__construct() {

            
self::$_host     'XXXXXXX';
            
self::$_user     =  'XXXXXXX';
            
self::$_pass     =  'XXXXXXX';
            
self::$_database =  'XXXXXXX';
            
self::$_charset  'XXXXXXX';

        if(
is_null(self::$_instance)) {

            
self::$_instance = new mysqli(self::$_hostself::$_userself::$_passself::$_database);
            if(
self::$_instance->connect_errno)
                throw new 
Exception($this->ERROR_CONNECTION);
            else
                
self::$_instance->set_charset(self::$_charset);
        }
    }

Clase SelectOption:

Código PHP:
class SelectOption extends ConectarBd{
    private static 
$_categorias;

    public function 
__construct(){
        
parent::__construct();
    }


    public static function 
menu(){
        
$mysqli parent::$_instance->query('SELECT id_categorias, categorias FROM categorias');
        if(
$mysqli->num_rows 0){
            while (
$option_select_categ $mysqli->fetch_assoc()) {
                
self::$_categorias.= sprintf("<option value = '%d'> %s \n"$option_select_categ['id_categorias'], $option_select_categ['categorias']);
            }
        }
        
$mysqli->free();

        return 
self::$_categorias;
    } 
E intento crear otra clase para extraer los datos de la base de datos creando un método estático llamado menu y enviar los datos al select:

<select> <?php echo SelectOption::menu(); ?></select>



El problema es que estoy aprendiendo poo y me salta el error que he titulado :

Fatal error: Call to a member function query() on a non-object .....

Ya he creado otros metodos estáticos para otro tipo de funciones y me funcionan correctamente, pero cuando lo hago conectándome a la base de datos con mysqli me salta ese error... A que se debe?

Muchas gracias.
  #2 (permalink)  
Antiguo 04/09/2015, 18:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Fatal error: Call to a member function query() on a non-object

Si ya estás heredando de la clase padre, no hace falta que hagas referencia a la misma en la variable de conexión. En lugar de parent::$_instance, sería self::$_instance.

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 06/09/2015, 15:38
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Fatal error: Call to a member function query() on a non-object

Gracias por tu respuesta Alexis88, sin embargo el error se sigue produciendo.

Etiquetas: call, fatal, function, mysql, query, 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 02:17.