mysqli中的未定义变量,但它在构造函数中定义

时间:2013-02-05 20:11:55

标签: php mysqli

我正在尝试使用mysqli,即使我已经存在,它也一直在给我一个错误 试图解决它几个小时。

这是数据库类

class db {

    public $mysqli;

    function __construct(){
        $mysqli = new mysqli('host', 'user', 'password', 'database');
    }

    function clean($string){
        $string = $mysqli->real_escape_string($string);
    }

}

当我尝试在类似的测试页面中调用它时,

$db = new db();
$db->clean("hi");

我收到错误:

注意:未定义的变量:第12行的C:\ xampp \ htdocs \ eat \ class \ db.class.php中的mysqli

致命错误:在第12行的C:\ xampp \ htdocs \ eat \ class \ db.class.php中的非对象上调用成员函数real_escape_string()

我有什么不对吗?我一直在浏览php手册很长一段时间和堆栈溢出,但它似乎没有其他人正面临这个错误。

2 个答案:

答案 0 :(得分:3)

您在方法范围中使用变量$mysqli。您应该使用$this来访问对象范围。

class db {

    public $mysqli;

    function __construct(){
        $this->mysqli = new mysqli('host', 'user', 'password', 'database');
    }

    function clean($string){
        return $this->mysqli->real_escape_string($string);
    }

}

答案 1 :(得分:0)

你有没有听说过在类方法中没有声明变量As is

在引用变量范围时,您必须始终使用$this->

下面是关于如何访问变量的蓝图

class foo {

$who= "MyName";

function __construct() {

$this->who;

}

}

在上面的示例中,函数内的who引用变量。