我正在尝试使用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手册很长一段时间和堆栈溢出,但它似乎没有其他人正面临这个错误。
答案 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
引用变量。