【问题标题】:Can't get mysqli identifier from another class无法从另一个类获取 mysqli 标识符
【发布时间】:2015-10-21 10:45:18
【问题描述】:

我有两个类:一个用于 sql,一个用于身份验证。这些是单独的文件,仅由自动加载器在另一个文件 (index.php) 中“组合在一起”。 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 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']);
    }
}

这就是错误所说的:警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,给定 null...我应该使用什么作为标识符才能执行查询?如您所知,mysqli 需要连接标识符。

谢谢一百万

【问题讨论】:

    标签: class mysqli identifier


    【解决方案1】:

    好的,我想通了!我没有在类中返回 TRUE,而是返回 self::$open。这样,我可以在软件中的任何地方使用 aF_sql::$open ,它指的是连接标识符。换句话说,它不起作用,因为我没有在类中返回变量......

    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']);
    

    就是这样……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2014-02-14
      • 2012-02-14
      相关资源
      最近更新 更多