mysqli::query(): mysqli 객체가 이미 닫혔습니다/mysqli 오류를 가져올 수 없습니다.
PHP에서 다음을 나타내는 오류 메시지 "mysqli를 가져올 수 없습니다."는 일반적으로 닫힌 데이터베이스 연결에 액세스하려고 할 때 발생합니다. 이는 mysqli 연결이 조기에 종료되는 객체 지향 프로그래밍(OOP) 스크립트에서 흔히 발생합니다.
오류 시나리오
class_EventCalendar.php 내에 제공된 코드에서 오류가 발생합니다. 다음 문제로 인해:
-
소멸자 동작: __destruct() 메서드는 EventCalendar 인스턴스가 삭제될 때 $DBConnect 객체를 닫습니다. 이는 삭제 후 시도된 모든 후속 쿼리가 실패함을 의미합니다.
-
쿼리 실행: addEvent() 메서드에서 $DBConnect 개체는 SQL 쿼리를 실행하는 데 사용됩니다. 그러나 소멸자가 연결을 닫았으므로 $DBConnect 개체를 더 이상 사용할 수 없습니다.
-
DBConnect 매개변수: @new mysqli() 매개변수가 데이터베이스 서버 설정에 맞는지 확인하세요. 예제 코드에서는 이러한 매개변수가 원래 값에서 수정되었습니다.
해결책
이 문제를 해결하려면 다음을 고려하세요.
-
소멸자 논리 수정: __destruct() 메서드를 다음과 같이 수정합니다. 실행할 쿼리가 남아 있지 않은 경우에만 $DBConnect 개체를 닫습니다. 이렇게 하면 연결이 조기에 종료되는 것을 방지할 수 있습니다.
-
연결 오류 처리: try-catch 블록 또는 기타 오류 처리 기술을 사용하여 데이터베이스 연결 파일에서 연결 오류를 적절하게 처리합니다.
-
PHP 버전: 닫힌 처리 변경으로 인해 "mysqli 개체가 이미 닫혔습니다."라는 오류가 PHP 8에서도 발생할 수 있습니다. mysqli 객체. PHP 버전이 최신인지 확인하세요.
추가 문제 해결 팁
- mysqli::error를 사용하여 오류 메시지를 확인하세요. 실패한 쿼리와 연관됩니다.
- mysqli 연결을 생성하기 전에 $_SESSION start가 호출되는지 확인하세요.
- mysqli 연결이 조기에 종료되는 다른 인스턴스가 있는지 PHP 스크립트를 확인하세요.
위 내용은 내 PHP 코드에서 'mysqli 개체가 이미 닫혔습니다' 오류가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!