1

我正在尝试将所有方法和属性从超全局 mysqli 类继承到我的 db 类中。

这是数据库类:

class DB extends mysqli
{
    protected $mysqli;

    public function __construct () {
        // connect to MySQL
        $mysqli = new mysqli('host', 'username', 'password', 'dbname');

        // output error if unable to connect
        if ($mysqli->connect_errno) {
            echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .     $mysqli->connect_error;
            exit;
        }
    }
}

这是主要的会议类:

class Meetings
{

    function __construct () {
        require_once('../include/classes/db.class.php');
        $db = new DB();

        $field = $db->real_escape_string($_POST['about']);

    }

}

在 Meetings 类中,我希望能够通过超全局 mysqli 类继承的实例化 DB 类调用 real_escape_string 方法。

我收到此错误:警告:mysqli::real_escape_string() [mysqli.real-escape-string]:无法获取数据库

4

1 回答 1

0

哎呀!您创建了 DB 对象,而 db 对象创建了 mysqli 类的另一个实例。你不应该调用 new mysqli,但你应该调用

parent::__construct('host', 'username', 'password', 'dbname')

或者

    parent::mysqli('host', 'username', 'password', 'dbname')

我不知道哪种格式适合 mysqli 构造函数。

在此之后,您不需要 DB 类中的 mysql 属性,因为在这种情况下,您的 mysqli 属性与 DB 类的 $this 相等。所以,不是 $mysqli->connect_errno,而是 $this->connect_errno 是对的。

于 2012-05-23T23:04:41.437 回答