現在の位置: ホーム> 最新記事一覧> ローカリゼーションエラープロンプトのために$ errnoと言語パックを組み合わせます

ローカリゼーションエラープロンプトのために$ errnoと言語パックを組み合わせます

M66 2025-05-29


mysqli :: $ errnoと言語パッケージを組み合わせて、ローカライズされたデータベースエラープロンプトを実装する方法は?

Webアプリケーションを開発するときは、データベース操作のエラー処理が不可欠です。ユーザーエクスペリエンスを向上させるには、さまざまなロケールに基づいて友好的なエラーメッセージを表示する必要があることがよくあります。 PHPはMySQLE拡張機能を提供してMySQLデータベースと対話し、 MySQLI :: $ ERRNOプロパティはエラーコードの取得に役立ち、エラーコードに基づいて対応するエラー情報を返すことができます。

この記事では、mysqli :: $ errnoと言語パッケージを組み合わせて、ローカリゼーションデータベースエラープロンプトを実装する方法を紹介します。

1。基本的なアイデア

まず、PHPのMySQLI拡張機能は、最新のMySQLエラーのエラーコードを保存するMySQLI :: $ ERRNOプロパティを提供します。エラーコードに基づいて対応するローカライズされたエラープロンプトを見つけることができる場合、アプリケーションの使用可能になり、異なるロケールに従って適切なエラーメッセージを返すことができます。

実装するときは、通常、次の手順が必要です。

  1. データベースエラーをキャプチャしてエラーコードmysqli :: $ errnoを取得します。

  2. 言語パックを介して対応する言語のエラー情報を取得します。

  3. ローカリゼーションエラーメッセージをユーザーに表示します。

2。言語パッケージを作成します

まず、言語パッケージを作成する必要があります。英語と中国語の2つの言語があるとします。この情報はPHPアレイに保存して、後続の検索と参照を容易にすることができます。

 // en.php (英語パック)
return [
    '1045' => 'Access denied for user',
    '1146' => 'Table doesn\'t exist',
    '2002' => 'Connection refused',
    // より多くのエラーコードと対応するエラーメッセージを追加できます
];

// zh.php (中国語パック)
return [
    '1045' => 'ユーザーアクセスは拒否されました',
    '1146' => 'テーブルは存在しません',
    '2002' => '接続拒否',
    // より多くのエラーコードと対応するエラーメッセージを追加できます
];

上記は、私たちが想定した2つの言語パック(英語と中国語)です。実際のアプリケーションでは、より多くの言語パッケージがあるか、JSON、XML、その他の形式を使用して言語データを保存することができます。

3。mysqli :: $ errnoと組み合わせて、ローカリゼーションエラープロンプトを実装します

データベースエラーが発生した場合、 mysqli :: $ errnoを介してエラーコードを取得し、エラーコードに基づいて言語パッケージから対応するエラープロンプト情報を取得できます。

 <?php

// 言語パックの読み込み
$lang = 'zh'; // ここでは、ユーザーの言語設定に従って動的に選択できます
$langFile = $lang . '.php';
$errorMessages = include($langFile);

// 作成する MySQLi 接続する
$mysqli = new mysqli("localhost", "username", "password", "database");

// 检查接続する
if ($mysqli->connect_error) {
    $errno = $mysqli->connect_errno;  // 获取接続する错误码
    echo '数据库接続する失败: ' . $errorMessages[$errno] ?? '不明なエラー';
    exit();
}

// クエリ操作を実行します
$result = $mysqli->query("SELECT * FROM non_existing_table");

if (!$result) {
    // エラーコードと出力ローカライズされたエラー情報を取得します
    $errno = $mysqli->errno;
    echo 'クエリに失敗しました: ' . $errorMessages[$errno] ?? '不明なエラー';
}

?>

この例では、データベース接続またはクエリ操作が失敗すると、 mysqli :: $ errnoが対応するエラーコードを返し、言語パッケージを介して対応するエラーメッセージを取得して表示します。

4.より複雑なエラー処理:カスタムエラーメッセージの追加

時には、ローカライズされたメッセージに対応する明確なエラーコードがない場合があります。この場合、各エラーコードにデフォルトのエラーメッセージを提供し、特定の状況に従ってさらにカスタマイズできます。

 <?php

// デフォルトのエラーメッセージ
$defaultMessages = [
    '1045' => 'Access denied for user',
    '1146' => 'Table doesn\'t exist',
    '2002' => 'Connection refused',
];

// ローカライズされたエラーメッセージを取得します,そうでない場合,デフォルトのメッセージを使用します
$errorMessage = $errorMessages[$errno] ?? $defaultMessages[$errno] ?? 'An unexpected error occurred.';

// 出力エラーメッセージ
echo 'データベースエラー: ' . $errorMessage;

?>

このようにして、どのエラーであっても、データベースエラーの元の情報が表示され、ユーザーにトラブルを引き起こすことを避けるために、適切なエラープロンプトを提供することができます。

5。概要

MySqli :: $ errnoと言語パッケージを組み合わせてローカライズされたデータベースエラープロンプトを実現することは、ユーザーエクスペリエンスと国際的なサポートを改善するための効果的な手段です。次の手順を通じて、この機能をアプリケーションに実装できます。

  • mysqli :: $ errnoエラーコードをキャプチャします。

  • 言語パッケージを作成し、エラーコードをローカライズされたエラープロンプトにマップします。

  • 現在のユーザーのロケール環境によると、対応する言語パックは動的にロードされます。

この方法により、アプリケーションは、異なる言語でユーザーに向かうときに、常に明確でわかりやすいエラー情報を提供することが保証されます。