conectar a base de datos con objetos

Iniciado por Geek7, 10 Junio 2014, 14:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Geek7

Soy un poco novato en esto asi que perdonen la pregunta. Porque en la funcion "disconnect", al hacer un llamado a la funcion close() (de mysqli) no responde?
Código (php-brief) [Seleccionar]
class DBConnection {

    private $connection;

    // On instance created connect to db
    public function __construct() {
        $this->connect();
    }

    private function connect() {
        require_once 'db_config.php';
        $this->connection = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD);

        if(!$this->connection)
            die('Couldnt connect to db: ' . $this->connection->connect_error);
    }

    private function disconnect() {
        $this->connection->close();
    }

    public function __destruct() {
        // Check if connection was established

        if($this->connection != NULL) {
            $this->disconnect();
        }
    }

}

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Geek7

#2
Código (php-brief) [Seleccionar]
class DBHandler {

   private $link;
   private $db_name;

   // On instance created connect to host
   // For installation, database name is null
   public function __construct($db_name = NULL) {
      $this->db_name = $db_name;
      $this->link = $this->connection($db_name);
   }


   private function connection() {
       $this->link = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, $this->db_name);

       if($this->link)
           return $this->link;
       else
           die('Couldnt connect to db: ' . $this->link->connect_error);
   }

   private function disconnect() {
       $this->link->close();
   }

   public function __destruct() {
       // Check if connection was established

       if($this->link != NULL)
           $this->disconnect();
   }

}


Recibo:
CitarPHP Warning:  mysqli::close(): Couldn't fetch mysqli in includes/DBHandler.php on line 24

o sea en la linea:
Código (php-brief) [Seleccionar]
$this->connection->close();

JorgeEMX

Es error con tu conexión o con los datos de acceso, funciona bien:

Código (php) [Seleccionar]

define("DB_HOST", 'localhost');
define("DB_USER", 'root');
define("DB_PASSWORD", '');
ini_set("display_errors", 1);

class DBHandler {

private $link;
private $db_name;

// On instance created connect to host
// For installation, database name is null
public function __construct($db_name = NULL) {
   $this->db_name = $db_name;
   $this->connection($db_name);
}


private function connection() {
$this->link = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, $this->db_name);

if(!$this->link)
die('Couldnt connect to db: ' . $this->link->connect_error);
}

private function disconnect() {
$this->link->close();
}

public function __destruct() {
// Check if connection was established
if($this->link != NULL)
$this->disconnect();
}

public function get_link()
{
return $this->link;
}

}

$my_db = new DBHandler('mi_super_base_de_datos');
$my_handler = $my_db->get_link();
printf("Versión de la biblioteca cliente: %s\n", $my_handler->client_info);
exit;