OOP问题:在非对象上调用成员函数prepare()

时间:2014-04-21 22:15:28

标签: php oop pdo

我尝试使用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学生; - 我更好地理解为什么)非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:2)

您正在使用private访问修饰符private $mysql;。将其更改为protected $mysql;