如何为PDODB连接构建和调用一个简单的PHP类


How to build and call a simple PHP class for a PDO DB connection

以下是迄今为止我所拥有的:

class DB {
    var $DBUser = 'xxx';
    var $DBPass = 'xxx';
    var $DBServer = 'xxx';
    var $DBName = 'xxx';
    public function connect() {
        try {  
            $strDSN = "mysql:host=$this->DBServer;dbname=$this->DBName;";  
            $username = $this->$DBUser;
            $pass = $this->$DBPass;
            $conn = new PDO($strDSN, $username, $pass);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            echo 'connected';
         }   
        catch (PDOException $e) {  
            echo 'Error: ' . $e->getMessage();   
        }  
    } //end method
} //end class

然后使用这个调用:

$db = new DB; 
$conn = $db->connect; 
$stmt = $conn->prepare('SELECT * FROM XXX WHERE id = :id'); 
$id = $_GET['id'];
$stmt->execute(array('id'=>$id)); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

然而,我收到了这个错误消息:

致命错误:在非对象上调用成员函数prepare()

你知道我做错了什么吗?

调用方法时,请包含括号:

$conn = $db->connect();
//                  ^^ missing

第二个问题是连接方法没有返回连接句柄。在try块中添加:

return $conn;

最后,在引用实例和类属性时,不要包含$

$username = $this->DBUser;
//                 ^ $ should not be present