Php OOP类继承错误

Php OOP类继承错误,php,mysql,oop,object,mysqli,Php,Mysql,Oop,Object,Mysqli,对于第二个类,我想从mysqli数据库中获取所有线程。我从第一个类开始扩展它,因为我需要连接信息。这就是我实现类的方式: class forum extends db{ public function __construct() { parent::__construct(); } function displayInfo () { $this->forumInfo = $getInfo = $db->db-

对于第二个类,我想从mysqli数据库中获取所有线程。我从第一个类开始扩展它,因为我需要连接信息。这就是我实现类的方式:

class forum extends db{

    public function __construct() {
        parent::__construct();
    }

    function displayInfo () {
        $this->forumInfo =
        $getInfo = $db->db->query("SELECT * FROM threads");
        while($getI = $getInfo->fetch_object()) {
            return $getI->Title;
        }
    }
}
但我明白了

注意:第42行未定义的属性:forum::$db 致命错误:对第42行中的非对象调用成员函数查询


没有所谓的$db-您现在想要$this作为类的一部分,所以

 $ThreadInfo = new forum;
 $ThreadInfo->displayInfo();
函数中未定义变量$db。将行更改为:

 $getInfo = $this->db->query("SELECT * FROM threads");

首先,您的连接没有实例化,您需要在db类中调用connect

$this->db->query
其次,您希望在类的作用域中访问$db:

function __construct() {
    $this->dbhost = DB_HOST;
    $this->dbuser = DB_USER;
    $this->dbpassword = DB_PASSWORD;
    $this->dbname = DB_NAME;
    $this->connect();
}
不要从数据库类扩展类。 这就是你做错的地方。以各种方式

将$db类的实例传递到论坛:

$getInfo = $this->db->query("SELECT * FROM threads");
此外,displayInfo函数的代码都是错误的。
在开始学习其他课程之前,您需要学习基本的mysqli操作。

这个问题似乎离题了,因为它是关于一个易于谷歌搜索和修复的通知,以及一个以前被问过并回答过的令人厌恶的打字错误,不应该再提出另一个关于它的问题。另一方面,您为什么要使用PHP4 OOP?很多OOP都是关于封装的。然而,您的代码没有使用任何可见性修饰符,有效地公开了所有类内部。支票,请。
$getInfo = $this->db->query("SELECT * FROM threads");
    class forum {
        private $db;

        public function __construct($db) { 
            $this->db = $db;
        } 

        function getInfo () {
        }



    }