PHPでは、特にMySQLデータベースを使用する場合、データベースと対話する必要があることがよくあります。MySQLI拡張機能は非常に一般的な選択です。ただし、データベース接続エラーやクエリエラーが発生した場合、これらのエラーに対処するための適切な方法が必要です。 mysqli :: $ errnoは、 MySQLIクラスの重要なプロパティであり、最後のMySQLエラーに関連するエラーコードを返します。この記事では、MySQLI :: $ ERRNOを使用して、カスタムエラーハンドラーのMySQLエラーを処理する方法について説明します。
PHPは、 set_error_handler()関数を提供して、カスタムエラーハンドラーを設定します。この方法でエラーをキャッチして処理できます。 MySQLIを使用してMySQLデータベースを接続および照会する場合、エラーが発生した場合、 MySQLI :: $ ERRNOはエラータイプを決定し、それに基づいて特定のエラー処理を実行するのに役立ちます。
mysqli :: $ errnoは、以前のMySQL操作のエラーコードを示す整数値を返します。エラーが発生しないと、 0が返されます。別の値が返された場合、エラーが発生しました。カスタムエラーハンドラーと組み合わせて、ログ、エラーメッセージの表示、または再試行操作など、エラーコードに従って分類および処理できます。
mysql :: $ errnoを使用してmysqlエラーを処理する例を次に示します。カスタムエラーハンドラーを設定し、 MySQLI :: $ errnoをデータベース接続とクエリで使用して、エラーを確認します。
<?php
// カスタムエラーハンドラーのセットアップ
set_error_handler("customErrorHandler");
function customErrorHandler($errno, $errstr, $errfile, $errline) {
// 診る MySQL エラーコード
if ($errno == E_USER_WARNING) {
echo "MySQL Error [$errno]: $errstr\n";
} else {
echo "Error [$errno]: $errstr in $errfile on line $errline\n";
}
}
// データベース接続を作成します
$mysqli = new mysqli("localhost", "username", "password", "database_name");
// 診る连接是否成功
if ($mysqli->connect_errno) {
trigger_error("Failed to connect to MySQL: " . $mysqli->connect_error, E_USER_WARNING);
exit();
}
// クエリを実行します
$query = "SELECT * FROM non_existent_table";
$result = $mysqli->query($query);
// 診る查询是否成功
if (!$result) {
trigger_error("MySQL Query Error: " . $mysqli->error, E_USER_WARNING);
}
// 接続を閉じます
$mysqli->close();
?>
上記のコードでは、最初にset_error_handler()関数を使用してCustomErrorhandlerという名前のカスタムエラーハンドラーを設定します。
MySQL接続が失敗した場合(データベースサーバーが使用できない場合)、接続エラーコードはmysqli-> connect_errnoを介して取得され、エラーメッセージはtrigger_error()を介してカスタムエラーハンドラーに渡されます。
同様に、クエリの実行に失敗した場合、 MySQLi->エラーを介してエラーメッセージを取得し、カスタムエラーハンドラーにキャッチされた警告( e_user_warning )をトリガーできます。
カスタムエラーハンドラーは、エラーコードと情報を印刷して、開発者が問題を見つけるのに役立ちます。
mysqli :: $ errnoは、エラーコードを返すだけでなく、mysqlエラーコードドキュメントを組み合わせて特定の問題を見つけるのに役立ちます。たとえば、エラーコードが1064の場合、SQL構文エラーを意味します。エラーコードが1045の場合、データベース認証が失敗したことを意味します。
コード内のURL関連のエラーを処理する必要がある場合は、 MySQLI :: $ ERRNOを使用して、URLのドメイン名をキャプチャして置き換えることができます。たとえば、コード内のデータベース操作に関連するエラーが見つかり、ドメイン名m66.netを置き換える場合、URLを次のように変更できます。
関連タグ:
mysqli