2010-04-26 6 views
0

Voici ce que j'essaie de faire: J'ai un fichier db.php qui fait toutes les manipulations de db.mysql_close(): l'argument fourni n'est pas une ressource MySQL-Link valide

Il dispose de 2 méthodes statiques, connecter et déconnecter.

Dans mon autre fichier, j'utilise simplement db :: connect() et db :: deconnect(). Mysql_close ($ con) dans la méthode deconnect ne sait pas qui est $ con.

Puisque je ne veux pas instancier ma classe statique est la seule voie à suivre.

La déclaration de 'private $ con' dans la classe db ne semble pas avoir d'effet.

Des idées?

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

} 

Répondre

1

Dans deconnect, $con est hors de la portée.

Vous devriez en faire un membre statique, comme ceci:

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

J'ai réussi à le découvrir par moi-même. a fait exactement la même chose avec mon code que vous avez fait ici. merci de toute façon: D –

0

Le message est logique que $con est hors de portée dans votre méthode deconnect() (... passe oublié Déconnexion?).

Utilisez un membre de données statiques

class db { static $con; }

Vous pouvez y accéder par le biais self::$con.

0

Eh bien, il me semble que con $ est une variable locale (local à la méthode se connecter). Ainsi, lorsque vous appelez mysql_close, le plus probablement $ con n'est pas défini. Essayez de déclarer $ con en tant que variable privée dans votre classe. Regardez here pour plus d'informations sur la façon de le faire.

Questions connexes