he programado una clase que realiza consultas SQL. El código de la clase es éste:
Código:
Y el código de su super clase (ConexionDB) es éste:<?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/>"); } } ?>
Código:
He probado la clase ConexionDB de forma independiente y funciona perfectamente así que el problema está en la sub clase, en la clase Consulta<?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); } } ?>
El problema es que si hago
Código:
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<?php require_once './ConexionDB.class.php'; require_once './Consulta.class.php'; $conexion=new ConexionDB(); $consulta=new Consulta('Select * from votacion'); ?>
Código:
ya hago esa comprobación y no me salta la excepción.if(!$this->dbLink)
¿Puede alguien ayudarme con ésto?
Muchas gracias de antemano por la ayuda.
Saludos,
Jose