mysqli::query(): mysqli オブジェクトはすでに閉じられています / mysqli エラーをフェッチできません
PHP では、次のエラー メッセージが表示されます。 「mysqli をフェッチできませんでした」は通常、閉じられたデータベース接続にアクセスしようとしたときに発生します。これは通常、mysqli 接続が途中で閉じられるオブジェクト指向プログラミング (OOP) スクリプトで発生します。
エラー シナリオ
class_EventCalendar.php 内の提供されたコードにより、エラーがスローされます次の理由により問題:
-
デストラクターの動作: EventCalendar インスタンスが破棄されると、__destruct() メソッドは $DBConnect オブジェクトを閉じます。これは、破棄後に試行される後続のクエリはすべて失敗することを意味します。
-
クエリ実行: addEvent() メソッドでは、$DBConnect オブジェクトを使用して SQL クエリを実行します。ただし、デストラクターが接続を閉じたため、$DBConnect オブジェクトは使用できなくなりました。
-
DBConnect パラメーター: @new mysqli() パラメーターがデータベース サーバー設定に対して正しいことを確認してください。コード例では、これらのパラメーターは元の値から変更されています。
解決策
この問題を解決するには、次の点を考慮してください。
-
デストラクター ロジックの修正: __destruct() メソッドを次のように変更します。実行するクエリが残っていない場合にのみ、$DBConnect オブジェクトを閉じます。これにより、接続の早期終了が防止されます。
-
接続エラー処理: try-catch ブロックまたはその他のエラー処理手法を使用して、データベース接続ファイルで接続エラーを適切に処理します。
-
PHP バージョン: 「mysqli オブジェクトはすでに閉じられています」というエラーは、閉じられた mysqli オブジェクトの処理。 PHP バージョンが最新であることを確認してください。
追加のトラブルシューティングのヒント
- mysqli::error を使用してエラー メッセージを確認してください失敗したクエリに関連付けられています。
- $_SESSION start が呼び出されてから、 mysqli 接続オブジェクト。
- mysqli 接続が途中で閉じられている他のインスタンスがないか PHP スクリプトを確認してください。
以上がPHP コードで「mysqli オブジェクトはすでに閉じられています」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。