2011-06-03 108 views
0

我試圖建立一個網站使用面向對象的功能,並遇到一些問題。當前傷腦筋我的人是我解決​​不了的錯誤消息:爲什麼我被告知我的mySQLi對象是'非對象'?

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); 
    } 
} 

我插入echo語句到構造函數,它被調用。我測試了get_user函數,並且它在別處工作 - 事實上,我使用了一個echo語句,它顯示實際上,當我在由get_user函數生成的對象上使用real_escape_string時,數據已正確轉義。那麼爲什麼這個組合不生成一個mySQLi函數來完成必要的工作?

+0

您是否正在檢查'get_user_MYSQL()'的返回值以確保它返回一個對象? – 2011-06-03 02:09:57

+0

雖然好點 - 我在這裏進行了無意識的快樂路徑編程 - 它確實會返回一個值。更好的問題是如何重新設計類來處理這個檢查...一個死函數,或者返回nil,然後檢查它存在的新語句? – RonLugge 2011-06-03 02:22:22

回答

1

我認爲你需要使用$this->db_link,因爲你試圖訪問類中的MySQLi對象。

+0

嗯,現在我只是覺得很傻 - 只要網站讓我接受它,就認爲你的回答是可以接受的。 – RonLugge 2011-06-03 02:21:13