2015-10-21 22 views
0

我有兩個類:一個用於sql,另一個用於身份驗證。這些是單獨的文件,只能通過另一個文件(index.php)中的自動加載器「聚集」在一起。 sql類看起來像這樣:無法從另一個類獲得mysqli標識符

class aF_sql { 
    public static $open; 
    public static $char; 
    public static $close; 

    public static function open() { 
     global $config; 

     self::$open = mysqli_connect($config['aF_sql_host'], $config['aF_sql_user'], $config['aF_sql_pass'], $config['aF_sql_data']); 
     if(!self::$open) { 
      die('<b>ERROR (/core/sql/1): Could not initialize database connection</b>'); 
     } 

     self::$char = mysqli_set_charset(self::$open, $config['aF_sql_char']); 
     if(!self::$char) { 
      die('<br>ERROR (/core/sql/2): Could not set database charset</br>'); 
     } 

     return TRUE; 
    } 

    public static function close() { 
     self::$close = mysqli_close(self::$open); 
     if(!self::$close) { 
      die('<b>ERROR (/core/sql/3): Could not close database connection'); 
     } 

     return TRUE; 
    } 
} 

一切工作正常,直到這裏。我使用class :: open()打開sql連接;方法,並使用class :: close();將其關閉。然後,我有一個文件可以幫助我查看一些登錄信息(auth類)。現在,我想要的只是提交的用戶名的回顯。以下是內容:

class aF_auth { 
    public static function login() { 
     echo mysqli_real_escape_string(aF_sql::open, $_POST['username']); 
    } 
} 

THISIS什麼錯誤說:警告:mysqli_real_escape_string()預計參數1是mysqli的,空給......我應該用什麼作爲標識符,以便能夠執行查詢?如你所知,mysqli需要連接標識符。

謝謝百萬

回答

0

好吧,我想通了!我沒有在類中返回TRUE,而是返回self :: $ open。這樣,我可以在軟件中的任何地方使用aF_sql :: $,它指向連接標識符。與其他詞,它沒有工作,因爲我沒有在類返回變量...

class aF_sql { 
public static $open; 
public static $char; 
public static $close; 

public static function open() { 
    global $config; 

    self::$open = mysqli_connect($config['aF_sql_host'], $config['aF_sql_user'], $config['aF_sql_pass'], $config['aF_sql_data']); 
    if(!self::$open) { 
     die('<b>ERROR (/core/sql/1): Could not initialize database connection</b>'); 
    } 

    self::$char = mysqli_set_charset(self::$open, $config['aF_sql_char']); 
    if(!self::$char) { 
     die('<br>ERROR (/core/sql/2): Could not set database charset</br>'); 
    } 

    return self::$open; 
} 

public static function close() { 
    self::$close = mysqli_close(self::$open); 
    if(!self::$close) { 
     die('<b>ERROR (/core/sql/3): Could not close database connection'); 
    } 

    return TRUE; 
} 

mysqli_real_escape_string(aF_sql::$open, $_POST['username']); 

就是這樣......

相關問題