2015-10-21 19 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']); 

就是这样......

相关问题