Почему мой объект PDO возвращает объект (PDO) [2] - PullRequest
0 голосов
/ 11 мая 2018

Привет, я работаю над базовым классом соединения для базы данных для mysql, используя PDO, однако, когда я вырываю дамп возвращаемого результата, он говорит мне, что у меня есть 2 объекта: object(PDO)[2].Разве это не должен быть только один?

Вот мой код:

class DBConnection
{
    // Settings (DSN)
    protected $driver, $host, $name, $charset;

    // Credentials
    protected $user, $pass;

    // PDO Connection
    protected $connection;

    public function __construct() {
        require_once( 'database.config.php' );

        // Settings (DSN)
        $this->driver   = DB_DRIVER;
        $this->host     = DB_HOST;
        $this->name     = DB_NAME;
        $this->charset  = DB_CHARSET;

        // Credentials
        $this->user     = DB_USER;
        $this->pass     = DB_PASS;

        // Initialise Connection
        var_dump($this->getConnection());
    }

    private function getConnection() {
        // Check if connection is already established
        if ( $this->connection == NULL ) {
            $dsn = "$this->driver:host=$this->host;dbname=$this->name;charset=$this->charset";
            try {
                $this->connection = new PDO($dsn,$this->user, $this->pass);
                $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch ( PDOException $error ) {
                echo 'Connection failed: ' . $error->getMessage();
            }
        }
        return $this->connection;
    }
}

$new = new DBConnection();

Файл конфигурации:

define('DB_DRIVER', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_CHARSET', 'utf8');
define('DB_USER', 'root');
define('DB_PASS', '');

1 Ответ

0 голосов
/ 11 мая 2018
    private function getConnection() {
    // Check if connection is already established
    if ( $this->connection == NULL ) {
        $dsn = "$this->driver:host=$this->host;dbname=$this->name;charset=$this->charset";
        try {
            $this->connection = new PDO($dsn,$this->user, $this->pass);
            $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            // This line is to remove associate array, then you will get only one object in result set
            $this->conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
        } catch ( PDOException $error ) {
            echo 'Connection failed: ' . $error->getMessage();
        }
    }
    return $this->connection;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...