我正在尝试使用面向对象的功能构建一个网站,并遇到一些问题。目前令我烦恼的是一条我无法解决的错误信息:
Fatal error: Call to a member function real_escape_string() on a non-object in /home/rilbur5/public_html/tutor/login.php on line 41
function get_user_MYSQL(){
return new mysqli($GLOBALS['db_host'],$GLOBALS['user_login'],$GLOBALS['user_password'],$GLOBALS['db_name']);
}//will turn this into a singleton object later
class User_Login{
private $db_link;
public function __construct()
{
$db_link=get_user_MYSQL();
}
public function bar($foo)
{
$foo=$db_link->real_escape_string($foo);
}
}
class User_Login{
private $db_link;
public function __construct()
{
$db_link=get_user_MYSQL();
}
public function bar($foo)
{
$foo=$db_link->real_escape_string($foo);
}
}
我已经在构造函数中插入了一个echo语句,并且它被调用了。我已经测试了get_user函数,它可以在其他地方运行 - 实际上,我使用了一个echo语句,它显示当我在get_user函数生成的对象上使用real_escape_string时,数据实际上已被正确转义。那么为什么组合不能生成一个能完成必要工作的mySQLi函数呢?
答案 0 :(得分:1)
我认为您需要使用$this->db_link
,因为您正在尝试访问类中的MySQLi对象。