-3
<?php

// Forum Configuration
define('DB_HOST','localhost'); // Database Hostname
define('DB_USER','root'); // Database Username
define('DB_PASSWORD',''); // Database Password
define('DB_NAME','ultraforum'); // Database Name
define('WEB_NAME','Website Name'); // Website Name
define('WEB_TITLE','Website Title'); // Website Title


// Do not modify anything under this line :)

class db {

    var $dbhost;
    var $dbuser;
    var $dbpassword;
    var $dbname;
    var $query;

    function connect() {
        $this->db =
            new mysqli($this->dbhost, $this->dbuser, $this->dbpassword, $this->dbname);
    }

    function __construct() {
        $this->dbhost = DB_HOST;
        $this->dbuser = DB_USER;
        $this->dbpassword = DB_PASSWORD;
        $this->dbname = DB_NAME;
    }
}

我的论坛类扩展了数据库

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;
        }
    }
}

对于第二堂课,我想从我的 mysqli 数据库中获取所有线程。我从头等舱扩展了它,因为我想要连接信息。这就是我实现类的方式:

 $ThreadInfo = new forum;
 $ThreadInfo->displayInfo();

但我明白了

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

4

4 回答 4

1

没有什么叫做 $db - 你现在希望 $this 作为它的类的一部分,所以

 $getInfo = $this->db->query("SELECT * FROM threads");
于 2013-08-04T13:41:24.600 回答
1

该变量$db未在您的函数中定义。将行更改为:

$this->db->query
于 2013-08-04T13:41:27.380 回答
0

不要从数据库类扩展您的类。

这就是你做错了。在可能的方式。

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

    class forum {
        private $db;

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

        function getInfo () {
        }



    }

此外,您的 displayInfo() 函数的代码都是错误的。在开始其他课程之前
, 您需要学习基本的 mysqli 操作。

于 2013-08-04T13:43:46.650 回答
-1

首先,你的连接没有被实例化,你需要在你的数据库类中调用connect() 。

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");
于 2013-08-04T13:43:33.203 回答