PHP: 分配新的 PDO 作为对象属性
PHP: Assigning new PDO as object-attribute
我正在尝试建立到我的 MySQL 数据库的 PDO 连接。此 PDO 也被此 class 的子 classes 继承,从中调用特定于连接的函数。当我从子 classes 调用这些特定于连接的函数时,出现错误。
所以在父 class 中,我有以下代码:
...
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 的准备语句时,我都会收到 "Call to a member function 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 数据对象是空对象,但我不明白为什么? $this->pdo = $pdo_local 不应该改变那个吗?
我是 Whosebug 的新手,如果这个问题有缺陷,我深表歉意。另外,如果您发现我的代码有任何可能的改进,请告诉我!
构造函数的正确函数名称是 __construct
。
我正在尝试建立到我的 MySQL 数据库的 PDO 连接。此 PDO 也被此 class 的子 classes 继承,从中调用特定于连接的函数。当我从子 classes 调用这些特定于连接的函数时,出现错误。
所以在父 class 中,我有以下代码:
...
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 的准备语句时,我都会收到 "Call to a member function 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 数据对象是空对象,但我不明白为什么? $this->pdo = $pdo_local 不应该改变那个吗?
我是 Whosebug 的新手,如果这个问题有缺陷,我深表歉意。另外,如果您发现我的代码有任何可能的改进,请告诉我!
构造函数的正确函数名称是 __construct
。