mysql_close():提供的参数不是有效的MySQL-Link资源

时间:2010-04-26 13:45:12

标签: mysql static-methods

这是我正在尝试做的事情:我有一个db.php文件,可以完成所有数据库操作。

它有2种静态方法,连接和断开。

在我的其他文件中,我只使用db :: connect()和db :: deconnect()。 deconnect方法中的mysql_close($ con)只是不知道$ con是谁。

因为我不想实例化我的类静态是唯一的方法。

在类db中声明'private $ con'似乎没有效果。

有什么想法吗?

class db {

    public static function connect() {
        $dbData = parse_ini_file($_SERVER['DOCUMENT_ROOT'].'/config.ini');

        $con = mysql_connect($dbData['host'],$dbData['user'],$dbData['pass']);
        $db = mysql_select_db($dbData['db']);
        if ((!$con) || (!$db))
            return 0;
        else return 1;
    }

    public static function deconnect() {
        mysql_close($con);
    }

}

3 个答案:

答案 0 :(得分:1)

deconnect中,$con超出了范围。

你应该把它变成一个静态成员,如下所示:

class db {
    static $con;

    public static function connect() {
        $dbData = parse_ini_file($_SERVER['DOCUMENT_ROOT'].'/config.ini');

        self::$con = mysql_connect($dbData['host'],$dbData['user'],$dbData['pass']);
        $db = mysql_select_db($dbData['db']);
        if ((!self::$con) || (!$db))
            return 0;
        else return 1;
    }

    public static function deconnect() {
        if( !isset( self::$con ) ) return;
        mysql_close( self::$con );
    }

}

答案 1 :(得分:0)

该消息有意义,因为$con方法中的deconnect()超出了范围(断开......?)。

使用静态数据成员

class db { static $con; }

通过self::$con访问它。

答案 2 :(得分:0)

好吧,在我看来,$ con是一个局部变量(方法连接的本地变量)。因此,当您调用mysql_close时,很可能$ con未定义。尝试将$ con声明为您班级中的私有变量。请查看here以获取有关如何执行此操作的详细信息。