PDO扩展为crud查询和致命错误

时间:2014-05-16 13:00:16

标签: php mysql pdo

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

这里我的MYsql_connection扩展到了Querys类。两者都是不同的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;
    }

}

1 个答案:

答案 0 :(得分:0)

您需要致电

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

而不是

$dbh->prepare($sql);

您还需要替换

return = $data;

return $data;

请记住,return是一个陈述,而不是variable

此外,Mysql_connection extends Querysinheritance的使用不正确。 A extends B表示AB的子类型。

使用真实示例,Dog可以是Animal的子类型。因为狗是动物,对吗?所以Dog extends Animal是正确的。

但是,Connection不是Query

我强烈建议您阅读一些有关继承和面向对象编程的内容。 ;)