Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: javirk en 17 Marzo 2012, 20:00 PM

Título: Errores con POO base de datos
Publicado por: javirk en 17 Marzo 2012, 20:00 PM
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.
Título: Re: Errores con POO base de datos
Publicado por: #!drvy en 17 Marzo 2012, 20:21 PM
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
Título: Re: Errores con POO base de datos
Publicado por: javirk en 17 Marzo 2012, 20:42 PM
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.
Título: Re: Errores con POO base de datos
Publicado por: #!drvy 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
Título: Re: Errores con POO base de datos
Publicado por: ~ Yoya ~ en 17 Marzo 2012, 23:44 PM
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.
Título: Re: Errores con POO base de datos
Publicado por: javirk en 18 Marzo 2012, 10:41 AM
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