PHP PDO соединение - PullRequest
       17

PHP PDO соединение

0 голосов
/ 23 июля 2011

Я хочу создать класс соединения для соединения с базой данных, используя PDO в PHP

, вот мой код:

<?php
class DatabaseConnection {

private $dbname     = "db_01";
private $host       = "localhost";
private $user       = "xxx";
private $password   = "xxxxxx";
private $port       = 5432;

private $DBH;

public function __construct() {
    try {
        $this->DBH  = new PDO("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password");
    } catch(PDOException $e) {
        echo    $e->getMessage();  
    }

}
public function disconnect() {
    $this->DBH  = null; 
}
}
?>

Для запроса в PDO я должен использовать $ DBH-> query ('SELECT * from user ');

но как, если я использую свой класс соединения в другом классе?

пример

<?php
include "DatabaseConnection.php";
class User {
    private $connection;

    public function getUser() {
        $this->connection = new DatabaseConnection();
        $STH = $this->connection->query('SELECT * from User');
    }
}
?>

Но это не работает.

Любое тело может мне помочь?Спасибо:)

ОБНОВЛЕНИЕ :

После того, как Иона предложил,

<?php

class DatabaseConnection extends PDO {

private $dbname     = "db_01";
private $host       = "localhost";
private $user       = "xxx";
private $password   = "xxxxxxxxx";
private $port       = 5432;

public function __construct() {
    try {
        parent::__construct("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password");
    } catch(PDOException $e) {
        echo    $e->getMessage();  
    }

}
public function disconnect() {
    $this = null;   
}
}
?>

я получил сообщение "Соединение было сброшено" в браузеренеправильно?

Ответы [ 2 ]

4 голосов
/ 23 июля 2011

Это не сработает. Вам либо нужно создать метод, который вызывает query в PDO:

class DatabaseConnection {
    // ...
    public function query($sql) {
        return $this->DBH->query($sql);
    }
    // ...
}

или расширить PDO.

class DatabaseConnection extends PDO {
    // ...
}

Обновление: С другой стороны, нет смысла оборачивать класс PDO вообще. Почему бы просто не создать объект PDO напрямую?

3 голосов
/ 23 июля 2011
class User {
  private $connection;

  public function __construct ($connection) {
    $this->connection = $connection;
  }

  public function getUser() {
    $STH = $this->connection->query('SELECT * from User');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...