PHP-不能在另一个类中引用mysqli类的方法

时间:2012-05-23 22:48:47

标签: methods mysqli extends mysql-real-escape-string inheritance

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

这是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]:无法获取数据库

1 个答案:

答案 0 :(得分:0)

糟糕! 您创建了DB对象,db对象创建了另一个mysqli类的实例。你不应该叫新的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是对的。