mysqli_sql_Exception: クエリでインデックスが使用されていません
指定されたコードで言及されている問題は致命的なエラーではなく、次のエラーが存在しないことを示す警告です。クエリ内のインデックス。 MySQL はこの状態に対して警告を発行しますが、パフォーマンスに重大な影響を与えない限り、重大なエラーではありません。
ただし、例外を引き起こす致命的なエラーは MySQL とは関係ありません。これは PHP コード自体の内部で発生します。
致命的エラーの根本原因
致命的エラーの原因となる主な要因は 3 つあります:
-
mysqli_report settings: 設定によるmysqli_report(MYSQLI_REPORT_ALL) では、無害なものも含め、すべてのエラーと警告をログに記録するように PHP に指示しています。
-
mysqli はすべてのエラーを例外としてスローします。 すべてのエラーと警告を mysqli_sql_Exception としてスローすると、これにより、処理されない可能性が高くなります
-
例外処理の欠如: このコードは、例外を処理するために try{} ブロックと catch(){} ブロックを利用していません。キャッチされなかった例外は致命的エラーとして分類されます。
解決策:
この問題を解決するには、2 つのオプションがあります:
- mysqli_report 設定の変更: 変更mysqli_report(...) を使用して MYSQLI_REPORT_STRICT または MYSQLI_REPORT_OFF を使用します。これにより、報告されるエラーと警告の数が減ります。
-
適切な例外処理を実装します。 PHP コード内で、データベース操作を try{} ブロックで囲み、潜在的な mysqli_sql_Exception をすべてcatch(){} ブロック。これにより、例外が適切に処理され、致命的なエラーにつながることがなくなります。
以上がPHP での致命的なエラーを防ぐために MySQLi 警告を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。