2008-09-26 5 views
1

저는 PHP에서하고있는 새 프로젝트에서 데이터베이스에 연결하고 쿼리를 수행하는 SQLMethod 클래스를 만들었습니다. 오늘 밤에 첫 번째 밤에 실제로 테스트했는데 (일주일 정도 전에 썼다가 잊어 버렸습니다) 예기치 않은 오류가 발생했습니다 : ExecuteQuery() 함수를 호출 할 때 데이터베이스 I을 사용하지 않았습니다. 생성자에서 선택됩니다.PHP 클래스 데이터베이스 연결 범위 문제

생성자 :

public function SQLMethods() { 
     $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword); 

     if (!$SQLConnection) { 
      die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db($SQLDB, $SQLConnection); 
    } 

문제의 기능 :

public function ExecuteQuery($Query) { 
     mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error()); 
    } 

사람이 문제가 될 일을 볼 수 있습니까? 생성자가 완료된 후 연결이 닫힙니 까?

답변

7

당신은 당신의 클래스에서 $ SQLConnection을 선언해야합니다, 당신은

$this->SQLConnection 

로 참조하고 단순히 $ SQLConnection을해야한다.

2

$SQLConnectionExecuteQuery 방법 내에 존재하지 않습니다.

매개 변수로 에 직접 전달하거나 생성자에서 설정되고 클래스 메소드 내에 $this->sqlConnection으로 액세스되는 sqlConnection 클래스 속성을 추가 할 수 있습니다.

1

변수 $SQLConnectionExecuteQuery()이 사용하려고 시도하는 변수가 다른 범위 내에 만들어졌습니다. (SQLMethods 기능).

연결이 php.net에 의해 명시된 바와 같이 PHP 스크립트가 작업을 완료되었거나 (연결이 해당 스크립트 내에서 이루어진 경우) 당신이 자신을 닫으면

당신은 ExecuteQuery$SQLConnection 변수를 건너 뛰어야 할 때 종료 문서

링크 식별자를 지정하지 않으면 mysql_connect()에 의해 열린 마지막 링크로 간주됩니다.