Errores con POO base de datos

Iniciado por javirk, 17 Marzo 2012, 20:00 PM

0 Miembros y 1 Visitante están viendo este tema.

javirk

Hola, tengo un problema que me está poniendo la cabeza como un tambor:
tengo tres archivos, el primero (clases.php):
Código (php) [Seleccionar]
include_once("config.php");
class Servidor_Base_Datos
{
  private $servidor;
  private $usuario;
  private $pass;
  private $base_datos;
  private $descriptor;
  function __construct($servidor,$usuario,$pass,$base_datos) {
     $this->servidor = $servidor;
     $this->usuario = $usuario;
     $this->pass = $pass;
     $this->base_datos = $base_datos;
     $this->conectar_base_datos();
  }
  private function conectar_base_datos() {
     $errorconect = "No ha sido posible conectar con la base de datos.";
     $this->descriptor = mysql_connect($this->servidor,$this->usuario,$this->pass,$this->base_datos) or die ($errorconect);
  }
  public function consulta($consulta) {
     $errorquery = "Fallo al sacar información de las tablas.";
     $this->consulta = mysql_query($consulta,$this->descriptor)or die ($errorquery);
  }
  public function extraer_registro() {
     $this->resultado=mysql_fetch_array($this->consulta);
     return $this->resultado;
  }
}


El segundo, el del include (config.php):
Código (php) [Seleccionar]
<?php
//Datos para conectarse a db:
$servidor "localhost";
$usuario "root";
$pass "";
$base_datos "basededatos";
?>


El tercero, donde hago una consulta a la base de datos:
Código (php) [Seleccionar]
<?php
require_once("config/config.php");
require_once(
"config/clases.php");
$usuario = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
$usuario->consulta("select * from users");
while(
$fila=$usuario->extraer_registro()){
printf("%s<br>",$fila["email"]);
}
?>


Bien, pues resulta que no hace la consulta bien y tira el error ese que he puesto de "Fallo al sacar información de las tablas." y no sé qué hacer más, la conexión la hace bien porque no sale mensaje alguno, y la tabla se llama users, como pone en la consulta.

Un saludo y gracias por adelantado.

#!drvy

Cambia,
Código (php) [Seleccionar]
public function consulta($consulta) {
     $errorquery = "Fallo al sacar información de las tablas.";
     $this->consulta = mysql_query($consulta,$this->descriptor)or die ($errorquery);
  }


Por
Código (php) [Seleccionar]
public function consulta($consulta) {
     $errorquery = "Fallo al sacar información de las tablas.";
     $this->consulta = mysql_query($consulta,$this->descriptor)or die (mysql_error());
  }


Y mira a ver que error te tira.

Saludos

javirk

Vale, gracias, me dice que no hay una base de datos seleccionada, pero si hago:
Código (php) [Seleccionar]
   function datos(){
      echo $this->base_datos;
   }


Código (php) [Seleccionar]
$usuario->datos();

Me muestra la base de datos que tiene que salir. No lo entiendo.

Un saludo.

#!drvy

Debes seleccionar la base de datos mediante mysql_select_db('nombre',$conexion);.

PD: El mysql_connect hasta donde yo se, no puede selecionar una bd.

Saludos

~ Yoya ~

Cita de: drvy | BSM en 17 Marzo 2012, 21:57 PM
Debes seleccionar la base de datos mediante mysql_select_db('nombre',$conexion);.

PD: El mysql_connect hasta donde yo se, no puede selecionar una bd.

Saludos

Exacto, el le esta pasando a mysql_connect el nombre de la DB como el 4 parametro jejejeje, y el 4 parametro es para otra cosa.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

javirk

Ahhh! Muchas gracias! Ya lo he arreglado, pongo el archivo para que otros no caigan en el mismo problema:
Código (php) [Seleccionar]
<?php
include_once("config.php");
class 
Servidor_Base_Datos
{
   private 
$servidor;
   private 
$usuario;
   private 
$pass;
   private 
$base_datos;
   private 
$descriptor;
   function 
__construct($servidor,$usuario,$pass,$base_datos) {
      
$this->servidor $servidor;
      
$this->usuario $usuario;
      
$this->pass $pass;
      
$this->base_datos $base_datos;
      
$this->conectar_base_datos();
   }
   private function 
conectar_base_datos() {
      
$errorconect "No ha sido posible conectar con la base de datos.";
      
$this->descriptor mysql_connect($this->servidor,$this->usuario,$this->pass) or die ($errorconect);
      
mysql_select_db($this->base_datos,$this->descriptor);
   }
   public function 
consulta($consulta) {
      
$errorquery "Fallo al sacar información de las tablas.";
      
$this->consulta mysql_query($consulta,$this->descriptor)or die ($errorquery);
   }
   public function 
extraer_registro() {
      
$this->resultado=mysql_fetch_array($this->consulta);
      return 
$this->resultado;
   }

   function 
datos(){
      echo 
$this->servidor;
      echo 
"<br>";
      echo 
$this->base_datos;
   }
}

?>


Los otros dos archivos son iguales