我尝试使用PDO,因此我将其放入数据库类的getter中:
class Database {
// dsn, username and password here
private $mysql;
public function __construct(){
$mysql = new PDO($this->dsn, $this->dbUsername, $this->dbPassword);
$mysql->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->mysql = $mysql;
}
public function database(){
return $this->mysql;
}
}
我正在调用数据库方法:
class Router extends Database {
public function loggedin(){
$query = $this->mysql()->prepare('SELECT * ...');
$query->execute(array(...));
...
}
但是我一直收到以下错误:
Fatal error: Call to a member function prepare() on a non-object
我已经让人们比我更了解这一点,但是我仍然对为什么这不起作用感到困惑。任何帮助和解释(CS学生; - 我更好地理解为什么)非常感谢!
谢谢!
答案 0 :(得分:2)
您正在使用private
访问修饰符private $mysql;
。将其更改为protected $mysql;
。