PHP:指定新的PDO作为对象属性


PHP: Assigning new PDO as object-attribute

我正在尝试建立一个到MySQL数据库的PDO连接。这个PDO也被这个类的子类继承,从中调用特定于连接的函数。当我从子类调用这些特定于连接的函数时,我会得到一个错误。

因此,在父类中,我有以下代码:

...
protected $pdo;
public function __constructor() { //Check if public
    try {
        $pdo_local = new PDO(C_DB_PDODRIVER . ":host=" . C_DB_HOST . ";dbname=" . C_DB_DATABASE, C_DB_USERNAME, C_DB_PASSWORD);
        $this->pdo = $pdo_local;
    } catch ('PDOException $e) {
        header("Location: error.html");
        exit;
    }
}
...

然而,每当我试图调用$this->pdo的prepare语句时,我都会收到一个"调用成员函数prepare()"的致命错误。

$query = "SELECT * FROM stacks WHERE id = :id LIMIT 1";
$stm = $this->pdo->prepare($query);
$para = array("id"=>$id); //where $id is the input parameter of the function
$stm->execute($para);
$result = $stm->fetch();

我读到PDO数据对象是一个null对象,但我不明白为什么?$this->pdo=$pdo_local不应该改变吗?

我是StackOverflow的新手,如果这个问题有缺陷,我很抱歉。此外,如果您在我的代码中看到任何可能的改进,请告诉我!

构造函数的正确函数名是__construct