为什么我被告知我的mySQLi对象是“非对象”?

时间:2011-06-03 02:07:09

标签: mysqli php

我正在尝试使用面向对象的功能构建一个网站,并遇到一些问题。目前令我烦恼的是一条我无法解决的错误信息:

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函数呢?

1 个答案:

答案 0 :(得分:1)

我认为您需要使用$this->db_link,因为您正在尝试访问类中的MySQLi对象。