Trabaje en entender un poco mas y logre hacer que mi clase funcione, y ya con una SELECT a la DB
database.php
Código PHP:
Ver original<?php
// error_reporting(0);
require_once(DIR_ROOT.SLASH.'loader.php');
class DBM{
private $MySQLi;
// Para llamar al metodo privado conectar()
public function conexion()
{
return self::conectar();
}
// Metodo provado donde hacemos la conexion a la DB
private function conectar(){
$MySQLi = $this->mysqli = new MySQLi (DB_HOST,DB_USER,DB_PASS,DB_DATABASE);
if ($MySQLi->connect_errno){
$MySQLi_error = $MySQLi->connect_error;
$response = '<b>Error al conectar al Servidor !!!<br>Error '.$MySQLi->connect_errno.':</b> '.$MySQLi_error;
echo $response;
}
else{
$MySQLi->set_charset('utf8');
// var_dump($this->mysqli);
// $response .= $this->mysqli->host_info . "<br>";
// $response .= 'Conectado al Servidor: <b>'.DB_HOST.'</b><br>';
// $response .= 'Base de Datos: <b>'.DB_DATABASE.'</b><br>';
// $response .= ('Conjunto de caracteres de la Base de Datos es: <b>'.$this->mysqli->character_set_name().'</b><br>');
// echo $response;
}
}
// Metodo publico para desconectarnos
public function desconectar(){
$MySQLi = $this->mysqli;
// Si hay una conexion, la cerramos
$cerrar = $MySQLi->close();
// if ($cerrar) {
// $response = '<hr>Conexion a la Base de Datos Cerrada !!!';
// return $response;
// }
// else{
// $response = '<hr>La Conexion a la Base de Datos sigue Abierta !!!';
// return $response;
// }
}
// else{
// $response = 'Conexion no esta definida';
// return $response;
// }
}
// Metodo para hacer Querys
public function query_function($sql){
$MySQLi = $this->mysqli;
$result_set = $MySQLi->query($sql); // Linea 61
}
if (!$result_set) {
echo '<br>Error en consulta :<pre> ' . $sql .'</pre>';
}
return $result_set;
}
public function get_users(){
$sql = 'SELECT nombre FROM usuarios';
$result = $this->query_function($sql);
$users = $result->fetch_all(MYSQLI_ASSOC);
return $users;
}
}
// Instanciamos la clase DBM = DataBaseManager
$dbm = new DBM();
?>
Si hago un
$users = $dbm->get_users(); me retorna los usuarios.
El problema es que quiero hacer las consultas desde un archivo aparte, osea tener el
database.php unico y exclusivo para funciones de la base de datos y el
querys.php para las consultas. Entonces hice un nuevo archivo y una clase para hacer el query
querys.php
Código PHP:
Ver original<?php
require_once(DIR_ROOT.SLASH.'loader.php');
class Query{
public function get_users(){
$sql = 'SELECT nombre FROM usuarios';
$result = DBM::query_function($sql); // OJO que estoy llamando de un solo al método query_function con instanciacion rápida DBM::
$users = $result->fetch_all(MYSQLI_ASSOC);
return $users;
}
}
// Instanciamos la clase Query
$query = new Query();
?>
Pero hal hacer
$users = $query->get_users(); me da error
Cita: Fatal error: Call to a member function query() on null in \root\class\database.php on line 61
La linea 61 del
database.php es la que tiene este código
$result_set = $MySQLi->query($sql);
Como puedo hacer para "conectar" las dos clases ?? Ya use
extends y nada, instancie en querys.php la clase DBM y nada