使用PDO连接MySQL的问题

时间:2014-06-16 23:59:46

标签: php mysql pdo

我一直在尝试将我的应用程序从使用折旧的mysql语法转换为PDO以连接到数据库并执行查询,到目前为止一直很痛苦。

现在我有一个类db_functions.php,我正在尝试创建一个到数据库的PDO连接,以及执行其中的所有CRUD操作。

以下是代码的示例:

db_functions.php
<?php

class DB_Functions {

    private $db;

    // constructor
    function __construct() {
        require_once 'config.php';
        // connecting to mysql
        try {
        $this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD);
        }
        catch (PDOException $e) {
            $output = 'Unable to connect to database server.' .
            $e->getMessage();
            exit();
        }
    }

    // destructor
    function __destruct() {

    }

public function getAllUsers() {
    try {
    $sql = "select * FROM gcm_users";
    //$result = mysql_query("select * FROM gcm_users");
    $result = $this->$db->query($sql);
    return $result;
    }
    catch (PDOException $e) {
        $error = 'Error getting all users: ' . $e->getMessage();
    }
}

使用该代码,我收到以下错误:

Notice: Undefined variable: db in C:\xampp\htdocs\gcm\db_functions.php on line 12

Fatal error: Cannot access empty property in C:\xampp\htdocs\gcm\db_functions.php on line 12

第12行是:

 $this->$db = new PDO('mysql:host=localhost;dbname=gcm', DB_USER, DB_PASSWORD);

我如何解决这个问题,以便我有一个PDO连接到我的数据库的正确实例,我可以用它来db_functions中的其他方法创建查询,例如getAllUsers()

我使用How do I create a connection class with dependency injection and interfaces?找到的答案无济于事。

1 个答案:

答案 0 :(得分:0)

TYPO

//$this->$db = 
$this->db = 

同样在这里

//$this->$db->query($sql);
$this->db->query($sql);

并且我也会使用127.0.0.1而不是localhost来提高性能,否则连接将需要很长时间...只需连接几秒......