晚上好人我是OOP的新来者,而且我遇到了一些问题。 在我打电话之后
private function __construct(){
try {
$this->_pdo = new PDO(
'mysql:host=' . config::get('mysql/host'),
'dbname=' . config::get('mysql/db'),
config::get('mysql/username'),
config::get('mysql/password'));
} catch (PDOException $e){
die($e->getMessage());
}
然后我打电话给
$this->_pdo->prepare($sql)
并且它表示致命错误:在非对象上调用成员函数prepare()
所以我var_dump($ this-> _pdo),结果为NULL。可能导致这个问题的原因是什么?
提前感谢您的帮助。
答案 0 :(得分:0)
试试这个:
<?php
private function __construct(){
try{
$this->_pdo = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'),config::get('mysql/username'),config::get('mysql/password'));
}catch(PDOExeption $e){
die($e->getMessage());
}
}
?>
答案 1 :(得分:0)
Juan看到了,但没有解释 - 你在主机名之后和dbname之前缺少一个分号。
通过拆分代码blob并将凭证字符串构建为单独的步骤,您可以获得更好的服务,然后您也可以将var_dumped放在一边,直接看到问题:
$host = config::get('mysql/host');
$db = config::get('mysql/db');
$creds = "mysql:host=$host;dbname=$db"
$this->_pdo = new PDO(
$creds,
config::get('mysql/username'),
config::get('mysql/password')
);