【问题标题】:PHP: Assigning new PDO as object-attributePHP:将新 PDO 分配为对象属性
【发布时间】:2015-12-19 09:48:21
【问题描述】:

我正在尝试建立与我的 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()”的致命错误。

$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 不应该改变吗?

我对 StackOverflow 很陌生,如果这个问题有缺陷,我很抱歉。另外,如果您发现我的代码有任何可能的改进,请告诉我!

【问题讨论】:

  • 我觉得你应该有public function __construct()
  • 感谢 RamRaider!你是对的

标签: php mysql pdo scope prepare


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2020-05-22
    • 2011-09-22
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多