我試圖建立一個網站使用面向對象的功能,並遇到一些問題。當前傷腦筋我的人是我解決不了的錯誤消息:爲什麼我被告知我的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函數來完成必要的工作?
您是否正在檢查'get_user_MYSQL()'的返回值以確保它返回一個對象? – 2011-06-03 02:09:57
雖然好點 - 我在這裏進行了無意識的快樂路徑編程 - 它確實會返回一個值。更好的問題是如何重新設計類來處理這個檢查...一個死函數,或者返回nil,然後檢查它存在的新語句? – RonLugge 2011-06-03 02:22:22