PHP で「致命的なエラー: キャッチされなかった例外 \'mysqli_sql_Exception\' とメッセージ「クエリ/準備されたステートメントでインデックスが使用されていません」\' を修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-21 08:33:30
オリジナル
299 人が閲覧しました

How to fix

コードを実行すると、「致命的なエラー: 捕捉されなかった例外 'mysqli_sql_Exception' とメッセージ 'クエリ/準備されたステートメントでインデックスが使用されていません'」というエラーが発生することがあります。

「クエリ/準備されたステートメントでインデックスが使用されていません」というエラー メッセージは、致命的なエラーの根本原因ではありません。むしろ、これはクエリの実行中にインデックスが利用されなかったことを示す MySQL からの警告であり、その結果パフォーマンスが低下する可能性があります。通常、この警告は致命的なエラーを引き起こすほど深刻ではありません。

この場合の致命的なエラーの本当の原因は PHP コードであり、次の 3 つの要因によって引き起こされます。

  1. mysqli は、比較的問題のない状況であっても、多数の警告を報告します。
  2. mysqli_report(MYSQLI_REPORT_ALL) が設定されているため、プログラムはエラーと警告の両方を mysqli_sql_例外例外として処理します。
  3. PHP コードはこの例外をキャッチしません。つまり、対応する catch(){} ブロックを含む try{} ブロックにカプセル化されていません。その結果、キャッチされなかった例外は致命的とみなされます。

他の応答に示されているように、最初の問題を解決することはできません。したがって、mysqli_report(...) 設定を MYSQLI_REPORT_STRICT または MYSQLI_REPORT_OFF に変更するか、実際には MYSQLI_REPORT_ALL 以外の設定に変更することができます。

(編集: w3d は以下のコメントでこれについて説得力のある説明を提供しています。実行可能な代替手段として mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) を推奨します。)

ベスト プラクティスとして、この機能を効果的に使用するには、try{} ブロックと catch(){} ブロックをシステム全体で適切に利用するベスト プラクティスを採用する必要があります。コード。

以上がPHP で「致命的なエラー: キャッチされなかった例外 \'mysqli_sql_Exception\' とメッセージ「クエリ/準備されたステートメントでインデックスが使用されていません」\' を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!