>백엔드 개발 >PHP 튜토리얼 >내 PHP 코드에서 'mysqli 개체가 이미 닫혔습니다' 오류가 나타나는 이유는 무엇입니까?

내 PHP 코드에서 'mysqli 개체가 이미 닫혔습니다' 오류가 나타나는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-09 15:47:15331검색

Why Am I Getting a

mysqli::query(): mysqli 객체가 이미 닫혔습니다/mysqli 오류를 가져올 수 없습니다.

PHP에서 다음을 나타내는 오류 메시지 "mysqli를 가져올 수 없습니다."는 일반적으로 닫힌 데이터베이스 연결에 액세스하려고 할 때 발생합니다. 이는 mysqli 연결이 조기에 종료되는 객체 지향 프로그래밍(OOP) 스크립트에서 흔히 발생합니다.

오류 시나리오

class_EventCalendar.php 내에 제공된 코드에서 오류가 발생합니다. 다음 문제로 인해:

  1. 소멸자 동작: __destruct() 메서드는 EventCalendar 인스턴스가 삭제될 때 $DBConnect 객체를 닫습니다. 이는 삭제 후 시도된 모든 후속 쿼리가 실패함을 의미합니다.
  2. 쿼리 실행: addEvent() 메서드에서 $DBConnect 개체는 SQL 쿼리를 실행하는 데 사용됩니다. 그러나 소멸자가 연결을 닫았으므로 $DBConnect 개체를 더 이상 사용할 수 없습니다.
  3. DBConnect 매개변수: @new mysqli() 매개변수가 데이터베이스 서버 설정에 맞는지 확인하세요. 예제 코드에서는 이러한 매개변수가 원래 값에서 수정되었습니다.

해결책

이 문제를 해결하려면 다음을 고려하세요.

  1. 소멸자 논리 수정: __destruct() 메서드를 다음과 같이 수정합니다. 실행할 쿼리가 남아 있지 않은 경우에만 $DBConnect 개체를 닫습니다. 이렇게 하면 연결이 조기에 종료되는 것을 방지할 수 있습니다.
  2. 연결 오류 처리: try-catch 블록 또는 기타 오류 처리 기술을 사용하여 데이터베이스 연결 파일에서 연결 오류를 적절하게 처리합니다.
  3. PHP 버전: 닫힌 처리 변경으로 인해 "mysqli 개체가 이미 닫혔습니다."라는 오류가 PHP 8에서도 발생할 수 있습니다. mysqli 객체. PHP 버전이 최신인지 확인하세요.

추가 문제 해결 팁

  • mysqli::error를 사용하여 오류 메시지를 확인하세요. 실패한 쿼리와 연관됩니다.
  • mysqli 연결을 생성하기 전에 $_SESSION start가 호출되는지 확인하세요.
  • mysqli 연결이 조기에 종료되는 다른 인스턴스가 있는지 PHP 스크립트를 확인하세요.

위 내용은 내 PHP 코드에서 'mysqli 개체가 이미 닫혔습니다' 오류가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.