PHP: назначение нового PDO в качестве атрибута объекта

Я пытаюсь создать PDO-соединение с моей базой данных MySQL. Этот 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, поэтому извините, если в этом вопросе есть недостатки. Кроме того, если вы видите какие-либо возможные улучшения в моем коде, сообщите мне!


person DaveTheAl    schedule 19.12.2015    source источник
comment
Я думаю, у тебя должно быть public function __construct()   -  person Professor Abronsius    schedule 19.12.2015
comment
Спасибо Рамрейдер! Ты прав   -  person DaveTheAl    schedule 19.12.2015


Ответы (1)


Правильное имя функции для конструктора — __construct.

person u_mulder    schedule 19.12.2015