mysql_close (): предоставленный аргумент не является допустимым ресурсом MySQL-Link - PullRequest
0 голосов
/ 26 апреля 2010

Вот что я пытаюсь сделать: у меня есть файл db.php, который выполняет все манипуляции с базой данных.

Имеется 2 статических метода: подключиться и отключиться.

В моем другом файле я просто использую db :: connect () и db :: deconnect (). Mysql_close ($ con) в методе deconnect просто не знает, кто такой $ con.

Поскольку я не хочу создавать экземпляр моего класса static, это единственный путь.

Объявление 'private $ con' в классе db, похоже, не имеет эффекта.

Есть идеи?

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 ]

1 голос
/ 26 апреля 2010

В 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 );
    }

}
0 голосов
/ 26 апреля 2010

Ну, мне кажется, что $ con - это локальная переменная (локальная для метода connect). Таким образом, когда вы вызываете mysql_close, скорее всего, $ con не определено. Попробуйте объявить $ con частной переменной в вашем классе. Посмотрите здесь для получения дополнительной информации о том, как это сделать.

0 голосов
/ 26 апреля 2010

Сообщение имеет смысл, поскольку $con находится вне области действия в вашем методе deconnect() (отсоединить ...?).

Использовать элемент статических данных

class db { static $con; }

Доступ к нему через self::$con.

...