Hola, tengo un problema que me está poniendo la cabeza como un tambor:
tengo tres archivos, el primero (clases.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,$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):
<?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:
<?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.
Cambia,
public function consulta($consulta) {
$errorquery = "Fallo al sacar información de las tablas.";
$this->consulta = mysql_query($consulta,$this->descriptor)or die ($errorquery);
}
Por
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
Vale, gracias, me dice que no hay una base de datos seleccionada, pero si hago:
function datos(){
echo $this->base_datos;
}
$usuario->datos();
Me muestra la base de datos que tiene que salir. No lo entiendo.
Un saludo.
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
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.
Ahhh! Muchas gracias! Ya lo he arreglado, pongo el archivo para que otros no caigan en el mismo problema:
<?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