mysqli::query(): MySQL オブジェクトがすでに閉じられているか、MySQL エラーをフェッチできません
問題
PHP スクリプトの実行中に、次のエラーが発生します。エラー:
-
PHP 7: mysqli::query(): [script_path] の行 [line_number]
-
の MySQL をフェッチできませんでしたPHP 8: キャッチされないエラー: MySQL オブジェクトはすでに存在していますClosed
説明
これらのエラーは、MySQL 接続オブジェクトが閉じられた後に PHP スクリプトが MySQL クエリを実行しようとしていることを示します。
解決策
MySQL 接続オブジェクトがクエリを実行する前はまだアクティブです。
// Check if the MySQL connection is open
if ($mysqli->connect_error) {
// Handle the connection error
} else {
// Execute the query
$result = $mysqli->query($query);
}
ログイン後にコピー
考えられる原因
-
接続を閉じるのが早すぎる: 必ず閉じてください。すべてのクエリが完了した後にのみ MySQL 接続を行う実行されました。
-
デストラクターの問題: 実行する必要のあるクエリがまだある場合は、クラスのデストラクター (__destruct) メソッドで MySQL 接続を閉じないようにしてください。
-
接続変数が正しく宣言されていない: MySQL 接続変数 (この場合は $mysqli) が宣言されていることを確認し、スクリプト全体で正しく割り当てられています。
追加メモ
- クラス EventCalendar の提供されたコード スニペットでは、MySQL 接続はデストラクターで閉じられています。 (__destruct) メソッド。デストラクターが呼び出された後もクエリが必要な場合、これは問題になる可能性があります。
- 正しい PHP バージョンと MySQL 拡張機能を使用していることを確認してください。
- 追加のエラーがないか MySQL サーバーのログを確認してください。メッセージ。
以上が私の PHP スクリプトが「mysqli::query(): MySQL Object Already Closed or Unable to Fetch MySQL Error」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。