php - PDO 扩展用于 CRUD 查询和 fatal error

标签 php mysql pdo

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

这里我的 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();
                }
        }
}

这是一个查询类

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是一个声明,而不是 variable !

此外,Mysql_connection extends Querysinheritance 的错误使用。 。 A extends B 表示 AB 的子类型。

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

但是,连接不是查询!

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

关于php - PDO 扩展用于 CRUD 查询和 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695624/

相关文章:

php - 单击后退按钮而不是 $_POST 值时读取 session

javascript - 使用 PHP 和 AJAX 获取页面名称而不是页码

MySQL按两列从组中选择最后一行

php - PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND)

php - 当 SQL 查询为空时使用 PHP 重定向

php - MySQL PHP 在没有我输入的情况下添加 3306

php mysql 将结果显示为下拉列表

php - 如何将数组插入Mysql表中

php - 使用插入 PDO 检索值

php - 实时抓取彩票开奖数据 - 我能找到合适的结果吗?如何整合这么多来源?