PDO扩展用于粗查询和致命错误


PDO extend for a crud querys and Fatal error

我正试图为CRUD创建查询类,并希望从其他类扩展连接,但我得到一个错误:致命错误:在非对象上调用成员函数prepare() !我错过了什么?或者只是愚蠢的扩展它?

这里我的MYsql_connection扩展到查询类。两个都是不同的php文件

class Mysql_connection extends Querys
{
    protected $dbh = null;
        function __construct()
        {
                try
                {
                    $this->dbh = new PDO('mysql:host=host; dbname=db','user','pass', array(PDO::MYSQL_ATTR_INIT_COMMAND=> 'SET NAMES utf8'));
                    $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    $this->dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
                }
                catch(PDOException $e)
                {
                    $this->dbh = null; 
                    print('Error on connection'.$e->getMessage());
                    die();
                }
        }
}
这里是一个Query类
class Querys{
    function getData()
    {
        $sql = "SELECT * FROM db";
        $result = $dbh->prepare($sql);
        $result = execute();
        $data = $result->fetch(PDO::FETCH_ASSOC);
                    return = $data;
    }
}

你需要调用

$this->dbh->prepare($sql);
不是

$dbh->prepare($sql);

您还需要替换

return = $data;

return $data;

请记住,return是一个语句,而不是一个变量!

此外,Mysql_connection extends Querys错误地使用了继承。A extends B表示AB的子类型。

使用一个现实世界的例子,Dog可以是Animal的子类型。因为狗是一种动物,对吧?所以Dog extends Animal是正确的。

然而,Connection不是Query !

我强烈建议你阅读一些关于继承和面向对象编程的知识。div;)

相关文章: