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::$_host, self::$_user, self::$_pass, self::$_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.