Hola a tod@s,
he programado una clase que realiza consultas SQL. El código de la clase es éste:
Código:
<?php
class Consulta extends ConexionDB{
private $result; // Declaración de atributos
private $sql;
function __construct($sql){
$this->sql=@mysql_real_escape_string($sql, $this->dbLink) OR die("La consulta no es
válida<br/>");
$this->result=@mysql_query($this->sql, $this->dbLink) OR die("La consulta no ha podido
llevarse a cabo<br/>");
}
}
?>
Y el código de su super clase (ConexionDB) es éste:
Código:
<?php
class ConexionDB {
private $dbHost;
private $dbName;
private $dbUser;
private $dbPass;
protected $dbLink;
/**
* Constructor de la Clase ConexionDB
**/
function __construct($dbName = 'votacion'){
$this->dbHost='localhost';
$this->dbUser='usuariodb';
$this->dbPass='passworddb';
$this->dbName=$dbName;
$this->dbLink=@mysql_pconnect($this->dbHost, $this->dbUser, $this->dbPass);
if(!$this->dbLink)
throw new Exception('No se pudo conectar a la Base de Datos');
if(!mysql_select_db($this->dbName,$this->dbLink))
throw new Exception('No se pudo conectar a la Base de Datos: '.
$this->dbName);
}
}
?>
He probado la clase
ConexionDB de forma independiente y funciona perfectamente así que el problema está en la sub clase, en la clase
Consulta
El problema es que si hago
Código:
<?php
require_once './ConexionDB.class.php';
require_once './Consulta.class.php';
$conexion=new ConexionDB();
$consulta=new Consulta('Select * from votacion');
?>
Me dice que
La consulta no es válida y si, en lugar de tratar el error, dejo que el script falle, el error que me dice es que le estoy pasando un argumento NULL a la función
mysql_real_escape_string como si la variable
dbLink fuera igual a NULL pero en la línea
ya hago esa comprobación y no me salta la excepción.
¿Puede alguien ayudarme con ésto?
Muchas gracias de antemano por la ayuda.
Saludos,
Jose