Autor Tema: Poblema connexión mysqli  (Leído 1408 veces)

Desconectado rocacasterli

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Poblema connexión mysqli
« en: 14 de Junio de 2014, 01:27:20 am »
Buenas noches, me he iniciado en el mundo de la programación orientada a objetos y probando la metodología de conexión a base de datos mysqli i las classes, me he encontrado con el siguiente error:

tengo tres ficheros:

config.php
<?
define("db_host", "localhost");
define("db_name", "universitario");
define("db_user", "root");
define("db_pass", "xxxxx");
define("db_charset","utf8");
?>

mydbclass.php
<?
require_once 'config.php';

class dataBase{
   
   private $conn;
   
   //obrim una connexio a la base de dades
   public static function __contruct()
   {
      $this->conn = new mysqli(db_host,db_user,db_pass,db_name);
      
      if($this->conn->connect_errno){
         echo "Error mysql: (".$this->conn->connect_errno.")".$this->conn->connect_error;
         exit();
      }
      
      //poo --> set_charset | estil per procediment mysqli_set_charset : UTF-8
      $this->conn->set_charset("db_charset");
      echo 'Éxito... '.$conn->host_info;
   }
   
   public static function get_universitarios()
   {
      $resultado = $this->conn->query("select * from universitario;");     <---- line 25 donde me da el error
      return $resultado;   
   }

   //cerramos connexion a la base de datos
   public function closedb()
   {
      $this->conn->close();
   }
   
      //destructor per tancar connexio a la base de dades
   public function __destruct()
   {
      $this->closedb();   
   }
}
?>

y el último fichero:

index.php
<?
include('mydbclass.php');
echo "Estas en la pagina de pruevas de connexion a la base de datos";
$prueva = new dataBase();
$uni = $prueva->get_universitarios();
foreach($uni as $row)
{
   echo "<p>".$row['nombre']."</p>";   
}
?>

El error que me muestra es el siguiente:

Estas en la pagina de pruevas de connexion a la base de datos
Fatal error: Using $this when not in object context in C:\AppServ\www\botiga\mydbclass.php on line 25


No se que estoy haciendo mal, si aún no tengo los conocimientos claros, ya que yo programo php en estilo por procedimieno.

Gracias de antemano.

Comunidad PHPeros

Poblema connexión mysqli
« en: 14 de Junio de 2014, 01:27:20 am »

Desconectado Jorge G.

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Sexo: Masculino
  • designing, just that...
    • Ver Perfil
Re:Poblema connexión mysqli
« Respuesta #1 en: 02 de Julio de 2014, 02:40:54 am »
No puedes hacer $this en funciones estáticas, eso está claro, por otra parte para solucionarlo, deberás hacer get_universitarios() no estático, e instanciar la clase, para hacerla correr.