Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/09/2015, 16:23
Gonzalezjoan
 
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.