Foros del Web » Programando para Internet » PHP »

PHP OO Problema con clase y conexión a la bd

Estas en el tema de Problema con clase y conexión a la bd en el foro de PHP en Foros del Web. Muy buenas. Estoy haciendo una clase con unos métodos los cuales hagan la conexión a la bd y luego hago una clase extendida de esta ...
  #1 (permalink)  
Antiguo 09/05/2012, 11:27
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Problema con clase y conexión a la bd

Muy buenas.

Estoy haciendo una clase con unos métodos los cuales hagan la conexión a la bd y luego hago una clase extendida de esta para hacer las queries y todo eso, el problema es que me da un error cuando intento conectarme a la BD:

Código PHP:
class MysqlConnect{
    
// Usado en las queries !!!!!!!!!!!!
    
public function mysqlConnect()
    {
        return 
mysql_connect(DB_HOSTDB_USERDB_PASSWORD)or die("<h1>No se pudo realizar la conexión a la BD.</h1>");
    }
    
    public function 
mysqlSelectDB()
    {
        return 
mysql_select_db(DB_NAME$this->mysqlConnect())or die("<h1>Error al seleccionar la base de datos.</h1>");
    }

el método mysqlConnect() funciona porque he hecho un var_dump y me devuelve un true, el error que me da el método mysqlSelectDB es el siguiente:

Código:
Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in C:\xampp\htdocs\Proyecto-FP2\lib\funciones.php on line 80
Error al seleccionar la base de datos.
La línea 80 es el contenido del método mysqlSelectDB.

Alguna idea de lo que pueda estar pasando?

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 09/05/2012, 11:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con clase y conexión a la bd

Me parece que deberías nombrar de otra forma al método de conexión, ya que es el mismo nombre de la clase y puede ser tomado como el constructor de la misma.

Además, también sería bueno saber si estás instanciando la clase de algún modo que no podemos adivinar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/05/2012, 11:46
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con clase y conexión a la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
Me parece que deberías nombrar de otra forma al método de conexión, ya que es el mismo nombre de la clase y puede ser tomado como el constructor de la misma.

Además, también sería bueno saber si estás instanciando la clase de algún modo que no podemos adivinar.
Voy a probar.

La única forma que la instancio para probar si funciona o no es con lo siguiente:

Código PHP:
$x = new MysqlConnect();
var_dump($x->mysqlSelectDB()); 
Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #4 (permalink)  
Antiguo 09/05/2012, 11:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con clase y conexión a la bd

No comprendo la insistencia en crear ese tipo de wrappers, porque no utilizas PDO directamente ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 09/05/2012, 11:58
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con clase y conexión a la bd

Cita:
Iniciado por masterpuppet Ver Mensaje
No comprendo la insistencia en crear ese tipo de wrappers, porque no utilizas PDO directamente ?

Saludos.
No lo conocía. Le echaré un vistazo, el problema que tengo que hacer que funciona una cosa hoy xD así que no me deja mucho tiempo para leerme todo jaja pero seguro que está interesante. Gracias

Por otro lado ya cambié el nombre de la clase y aún así me sigue dado el mismo fallo :S

Saludos !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #6 (permalink)  
Antiguo 09/05/2012, 12:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con clase y conexión a la bd

El problema debe ser que en el return se evalúa la condición y te retorna un booleano, prueba con algo así:

Código PHP:
Ver original
  1. public function connect()
  2. {
  3.     $connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("<h1>No se pudo realizar la conexión a la BD.</h1>");        
  4.     return $connection;
  5. }

de todas formas te sugiero que utilices excepciones.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 09/05/2012, 12:33
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con clase y conexión a la bd

Cita:
Iniciado por masterpuppet Ver Mensaje
El problema debe ser que en el return se evalúa la condición y te retorna un booleano, prueba con algo así:

Código PHP:
Ver original
  1. public function connect()
  2. {
  3.     $connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("<h1>No se pudo realizar la conexión a la BD.</h1>");        
  4.     return $connection;
  5. }

de todas formas te sugiero que utilices excepciones.

Saludos.
Era eso, mil gracias :)

Muchas veces por intentar "acortar" el código pasan estas cosas. Aún así me leeré lo que me pasaste que parece muy interesante.

Un saludo !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Etiquetas: php+oo, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:48.