PHP 클래스 데이터베이스 연결 범위 문제
-
02-07-2019 - |
문제
PHP에서 수행하는 새로운 프로젝트의 경우 데이터베이스에 연결하고 쿼리를 수행하기 위해 SQLMethods 클래스를 만들었습니다. 오늘 밤은 실제로 테스트해야 할 첫날 (일주일 정도 전에 썼고 잊어 버렸습니다)과 예기치 않은 오류가 발생했습니다. ExecuteQuery () 함수를 호출 할 때 데이터베이스 I를 사용하지 않을 것입니다. 생성자에서 선택됩니다.
생성자 :
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());
}
누구든지 문제가 무엇인지 알 수 있습니까? 생성자가 완료된 후 연결이 닫히나요?
해결책
수업에서 $ sqlconnection을 선언해야하며,이를
$this->SQLConnection
단순히 $ sqlconnection이 아닙니다.
다른 팁
$SQLConnection
안에 존재하지 않습니다 ExecuteQuery
방법.
매개 변수로 직접 전달할 수 있습니다. ExecuteQuery
, 또는 추가하십시오 sqlConnection
생성자에 설정되어 다음과 같이 액세스하는 클래스 속성 $this->sqlConnection
수업 방법 내부.
변수 $SQLConnection
ExecuteQuery()
사용하려는 것은 다른 범위 내에서 생성됩니다. (그만큼 SQLMethods
기능).
PHP 스크립트가 작업을 수행했거나 직접 닫으면 연결이 닫힙니다 (해당 스크립트 내에서 연결이 이루어지면)
당신은 그것을 건너 뛰어야합니다 $SQLConnection
내부의 변수 ExecuteQuery
php.net 문서에서 언급 한 바와 같이
링크 식별자가 지정되지 않은 경우 마지막 링크가
mysql_connect()
가정됩니다.