Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2011, 05:49
jruiz_fdez
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Error en script para hacer consultas SQL

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
Código:
if(!$this->dbLink)
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
__________________
Nadie dijo que ésto iba a ser fácil