Foros del Web » Programando para Internet » PHP »

Cerrar una base de datos que se abre con una clase

Estas en el tema de Cerrar una base de datos que se abre con una clase en el foro de PHP en Foros del Web. Hola señores Tengo la siguiente clase con nombre de archivo "_db.php": Código PHP: <?php class  DB {     public function  setDB  ()     {         @ mysql_connect  ( 'localhost' ...
  #1 (permalink)  
Antiguo 20/03/2011, 19:09
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Cerrar una base de datos que se abre con una clase

Hola señores

Tengo la siguiente clase con nombre de archivo "_db.php":

Código PHP:
<?php

class DB
{
    public function 
setDB ()
    {
        @
mysql_connect ('localhost''miusuario''miclave') or die ('No se conecto a la base de datos: ' mysql_error());
        @
mysql_select_db ('anotaciones') or die ('Verifique la base de datos');
    }
}

?>
Y la aplico de la siguiente forma:

Código PHP:
<?php
    
include('_db.php'); $dbs = new DB(); $dbs->setDB();
    
$qry mysql_query ('SELECT * FROM categorias ORDER BY categ ASC');
    
    while (
$row mysql_fetch_array($qry))
    {
        echo 
'<option value="' $row['categ'] . '">' $row['categ'] . '</option>' "\r\n";
    }
    
    
mysql_close($dbs);
?>
Hace el query e imprime cada linea sin problemas, pero recibo este error cuando lee a "mysql_close($dbs)", que es la linea 55:

Código HTML:
<b>Warning</b>:  mysql_close() expects parameter 1 to be resource, object given in <b>.../anotaciones/index.php</b> on line <b>55</b> 
Obviamente es la forma como estoy cerrando esa base de datos. ¿De que forma puedo cerrar una base de datos que abri como ven arriba?

Gracias a cualquier respuesta o idea que me puedan facilitar.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #2 (permalink)  
Antiguo 20/03/2011, 19:16
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Cerrar una base de datos que se abre con una clase

porque en ningun momento estas asignando la conexion a $dbs, unicamente estas realizando un llamado al metodo para conectar, este no te retorna nada por lo que no puedes exigir que tenga algo, de echo $dbs es un objeto del tipo DB, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 20/03/2011, 19:32
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: Cerrar una base de datos que se abre con una clase

Que tal junihh,

mysql_close recive por parametro un resource, este resource te lo da mysql_connect, y al no guardarlo no podes cerrar la conexión, si miras la documentación vas a ver a que me refiero y te sugiero que utilices PDO, hoy en dia no vale la pena crear un wrapper al set de funciones mysql_* a menos que estes atado por razón de fuerza mayor a PHP 4.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 20/03/2011, 20:06
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Cerrar una base de datos que se abre con una clase

Cita:
Iniciado por masterpuppet Ver Mensaje
... y te sugiero que utilices PDO, hoy en dia no vale la pena crear un wrapper al set de funciones mysql_* a menos que estes atado por razón de fuerza mayor a PHP 4.
Pues la verdad no conocia PDO hasta ahora que lo mencionas. Tiene muchas funciones, pero se ve bastante interesante de usar. Leere mas sobre PDO.

Gracias a ambos por sus respuestas.
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: cerrar, clase
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 18:00.