2010-04-26 2 views
0

다음은 제가하려고하는 작업입니다. 모든 db 조작을 수행하는 db.php 파일이 있습니다.mysql_close() : 제공된 인자가 유효한 MySQL-Link 자원이 아닙니다.

2 개의 정적 메소드 connect 및 deconnect가 있습니다.

다른 파일에서는 간단히 db :: connect()와 db :: deconnect()를 사용합니다. deconnect 메소드의 mysql_close ($ con)는 $ con이 누구인지 알지 못합니다.

저는 정적 인 클래스를 인스턴스화하고 싶지 않으므로 이동하는 유일한 방법입니다.

db 클래스에서 'private $ con'을 선언해도 아무런 효과가없는 것 같습니다.

아이디어가 있으십니까? $condeconnect() 방법의 범위를 벗어난다로

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

} 

답변

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

} 
+0

나는 혼자서 알아볼 수있었습니다. 내 코드로 똑같은 일을 했지. 어쨌든 고맙습니다. D –

0

메시지는 의미가 있습니다 (deconnect ...?).

self::$con을 통해 정적 데이터 멤버에게

class db { static $con; }

액세스를 사용합니다.

0

음 :

귀하는이 같은 정적 멤버,해야한다. 따라서, mysql_close를 호출하면, 대부분 $ con은 정의되지 않는다. $ con을 클래스의 private 변수로 선언 해보십시오. 그 방법에 대한 자세한 정보는 here을보십시오.

관련 문제