MySQL拡張機能は、PHPを使用してMySQLデータベースを操作する場合、最も一般的なデータベース接続ツールの1つです。ただし、データベース操作中に、いくつかの例外またはエラーは避けられません。これらの例外をより適切にキャッチして処理するために、 mysqli_sql_exceptionとmysqli :: $ errnoは強力な機能を提供します。この記事では、例を使用して、 mysqli_sql_exceptionと組み合わせて詳細なデータベース例外情報をキャプチャする方法を説明し、 mysqli :: $ errnoを使用してこれらのエラーをさらに処理します。
mysqli_sql_exceptionは、MySQLデータベースの例外を処理するために特別に使用されるPHPのクラスです。データベースクエリを実行すると、エラーが発生した場合、 mysqli_sql_exceptionは対応する例外がスローされます。これにより、開発者はTry ... Try ... MySQLI_ERRORやMySQLI_ERRNOなど)に依存せずにステートメントをキャッチすることで、これらの例外をキャッチして処理できます。
mysqli_sql_exceptionでは、 mysqli :: $ errnoが最後のmysql操作のエラーコードを記録します。これは、データベース操作エラーのタイプを示す数字です。たとえば、 mysqli :: $ errnoは、それが接続障害、クエリの構文エラー、または許可の問題などを区別するのに役立ちます。mysqli_sql_exceptionと組み合わせて、エラー情報をより詳細にキャプチャして処理できます。
mysqli_sql_exceptionを使用してデータベースの例外をキャッチするための基本的な手順は次のとおりです。
データベース接続を作成するときは、例外モードをオンにします。
トライ...キャッチステートメントブロックを使用して、データベース操作で例外をキャッチします。
MySqli :: $ errnoをCatchステートメントブロックで使用してエラーコードを取得し、エラーコードに基づいて詳細なエラー情報または処理ロジックを提供します。
MySqli_sql_exceptionとmysqli :: $ errnoを使用して、データベースの例外をキャッチして処理する完全な例を次に示します。
<?php
// 例外処理をオンにします
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// データベース接続を作成します
try {
$mysqli = new mysqli("localhost", "root", "password", "test_database");
// データベースクエリ操作を実行します
$result = $mysqli->query("SELECT * FROM non_existing_table");
} catch (mysqli_sql_exception $e) {
// データベースの例外をキャッチします
echo "データベース操作に失敗しました: " . $e->getMessage() . "<br>";
// 出力エラーコード
echo "エラーコード: " . $e->getCode() . "<br>";
// さらに、さまざまなタイプのエラーを処理します
if ($e->getCode() == 1146) { // 1146 テーブルが存在しないことを示します
echo "間違い:テーブルは存在しません,データベース構造を確認してください。";
} else {
echo "間違い:クエリを実行できません,あなたをチェックしてください SQL 文法。";
}
// 使用することもできます mysqli::$errno 具体的に取得します MySQL エラーコード
echo "MySQL エラーコード: " . $mysqli->errno . "<br>";
echo "MySQL 間違い信息: " . $mysqli->error . "<br>";
}
?>
例外レポートをオンにします:
mysqli_report(mysqli_report_error | mysqli_report_strict)を使用します。 mysqli_sql_exception例外レポートを有効にするためのステートメント。これにより、 MySQLIは、エラーコードを返すことでエラーを報告するのではなく、エラーに遭遇するときにMySQLI_SQL_EXCEPTION例外をスローします。
例外をキャッチ:
try ... catchステートメントを通じて、すべてのmysqli_sql_exception例外をキャッチし、 Catchステートメントブロックでそれらを処理できます。
エラーコードと情報を取得します:
データベース例外のエラーコードは$ e-> getCode()を使用して取得でき、異なるエラープロンプト情報をエラーコードに従って提供できます。
Mysqli :: $ errnoおよびmysqli :: $ errorを使用:
$ mysqli-> errnoおよび$ mysqli->エラーを介して、mysqlデータベースのエラーコードとエラー情報を取得します。これは、デバッグおよび処理エラーに非常に役立ちます。
実際の開発では、エラー情報のキャプチャと出力に加えて、エラータイプを最適化することもできます。
エラーログ:エラー情報をログファイルに記録して、その後の表示とトラブルシューティングを簡単にします。
ユーザーフレンドリーなエラープロンプト:データベースの詳細をユーザーに公開しないように、エラータイプに従ってフレンドリーなプロンプト情報を表示します。
トランザクション処理:複数のクエリを含む操作の場合、トランザクションメカニズムを使用して、データの一貫性と信頼性を確保することができます。
mysqli_sql_exceptionとmysqli :: $ errnoを組み合わせることにより、データベース操作で詳細な例外情報をキャプチャして処理できます。これは、開発者が問題をより速く見つけるのに役立つだけでなく、システムの堅牢性とユーザーエクスペリエンスを向上させるのにも役立ちます。この記事の例が、PHPのデータベース例外処理メカニズムをよりよく理解して使用するのに役立つことを願っています。