現在の位置: ホーム> 最新記事一覧> mysqli :: $エラーを組み合わせて、マルチ言語環境でエラープロンプト関数を実装する方法は?

mysqli :: $エラーを組み合わせて、マルチ言語環境でエラープロンプト関数を実装する方法は?

M66 2025-07-18

mysqli :: $エラーとは何ですか?

PHPでは、 MySQLI拡張機能を使用してMySQLデータベースと対話します。データベースクエリを実行すると、 MySQLI :: $ ERROR属性は、現在接続されているMySQLデータベースによって返されるエラーメッセージを提供します。クエリが失敗した場合、 MySQLI :: $エラーはMySQLによって返されるエラー情報を保存し、開発者はこのプロパティを使用してエラー処理とデバッグを実行できます。

多言語アプリケーションでは、MySQLエラーメッセージを直接使用することは、通常英語または技術的な説明であり、通常のユーザーが読むのに適していないため、ユーザーへの表示には適していません。したがって、 mysqli :: $エラーを組み合わせて、マルチリンガルをサポートするエラープロンプトを作成する必要があります。

多言語エラープロンプトを実装する方法

多言語エラープロンプト関数を実装するコアは、ユーザーの言語設定を介してエラー情報を動的に選択することにあります。ここにいくつかの重要なステップがあります:

1.ユーザー言語を取得します

まず、ユーザーの言語設定を取得する必要があります。通常、ユーザー言語設定はセッションに保存されるか、ブラウザのAccept-Languageリクエストヘッダーを介して取得されます。簡単にするために、言語はすでに$ _Session ['Lang']に保存されていると想定しています。

 <span><span><span class="hljs-comment">// 現在の言語を取得します,デフォルトは英語です</span></span><span>
</span><span><span class="hljs-variable">$lang</span></span><span> = </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'lang'</span></span><span>]) ? </span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'lang'</span></span><span>] : </span><span><span class="hljs-string">'en'</span></span><span>;
</span></span>

2。エラーメッセージテキストを定義します

各言語がサブアレイに対応して、多次元配列でエラープロンプトテキストを定義できます。このようにして、すべてのエラーメッセージは配列に記載されています。

 <span><span><span class="hljs-variable">$errorMessages</span></span><span> = [
    </span><span><span class="hljs-string">'en'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'invalid_query'</span></span><span> =&gt; </span><span><span class="hljs-string">'There was an error with the SQL query.'</span></span><span>,
        </span><span><span class="hljs-string">'connection_failed'</span></span><span> =&gt; </span><span><span class="hljs-string">'Failed to connect to the database.'</span></span><span>,
        </span><span><span class="hljs-string">'unknown_error'</span></span><span> =&gt; </span><span><span class="hljs-string">'An unknown error occurred.'</span></span><span>,
    ],
    </span><span><span class="hljs-string">'zh'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'invalid_query'</span></span><span> =&gt; </span><span><span class="hljs-string">'SQL クエリでエラーが発生しました。'</span></span><span>,
        </span><span><span class="hljs-string">'connection_failed'</span></span><span> =&gt; </span><span><span class="hljs-string">'データベース接続に失敗しました。'</span></span><span>,
        </span><span><span class="hljs-string">'unknown_error'</span></span><span> =&gt; </span><span><span class="hljs-string">'不明なエラーが発生しました。'</span></span><span>,
    ],
    </span><span><span class="hljs-comment">// 他の言語を追加し続けることができます</span></span><span>
];
</span></span>

3.カスタムエラー処理機能

次に、現在の言語とMySQLエラーメッセージに基づいて適切なプロンプトを表示するカスタムエラー処理関数を作成できます。

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getErrorMessage</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$error</span></span></span><span>, </span><span><span class="hljs-variable">$lang</span></span><span> = </span><span><span class="hljs-string">'en'</span></span><span>) {
    </span><span><span class="hljs-keyword">global</span></span><span> </span><span><span class="hljs-variable">$errorMessages</span></span><span>;

    </span><span><span class="hljs-comment">// 言語を選択するためのエラーメッセージ</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$errorMessages</span></span><span>[</span><span><span class="hljs-variable">$lang</span></span><span>]) &amp;&amp; </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$errorMessages</span></span><span>[</span><span><span class="hljs-variable">$lang</span></span><span>][</span><span><span class="hljs-variable">$error</span></span><span>])) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$errorMessages</span></span><span>[</span><span><span class="hljs-variable">$lang</span></span><span>][</span><span><span class="hljs-variable">$error</span></span><span>];
    }

    </span><span><span class="hljs-comment">// 対応するエラーメッセージが見つからない場合,デフォルトの英語エラーメッセージを返します</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$errorMessages</span></span><span>[</span><span><span class="hljs-string">'en'</span></span><span>][</span><span><span class="hljs-variable">$error</span></span><span>] ?? </span><span><span class="hljs-string">'An error occurred.'</span></span><span>;
}
</span></span>

4。MySqli:: $エラーを使用して、エラー情報を取得します

次に、データベース操作では、 MySQLI :: $エラーを介してデータベースのエラー情報を取得し、カスタムエラー処理関数と組み合わせてマルチ言語エラープロンプトを返すことができます。

 <span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'user'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-string">'database'</span></span><span>);

</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getErrorMessage</span></span><span>(</span><span><span class="hljs-string">'connection_failed'</span></span><span>, </span><span><span class="hljs-variable">$lang</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>();
}

</span><span><span class="hljs-comment">// a SQL クエリ</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT * FROM non_existent_table'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-comment">// 得る mysqli エラーメッセージ</span></span><span>
    </span><span><span class="hljs-variable">$mysqlError</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error;
    
    </span><span><span class="hljs-comment">// 根据エラーメッセージ决定错误类型</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$mysqlError</span></span><span>, </span><span><span class="hljs-string">'unknown column'</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getErrorMessage</span></span><span>(</span><span><span class="hljs-string">'invalid_query'</span></span><span>, </span><span><span class="hljs-variable">$lang</span></span><span>);
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getErrorMessage</span></span><span>(</span><span><span class="hljs-string">'unknown_error'</span></span><span>, </span><span><span class="hljs-variable">$lang</span></span><span>);
    }
}

</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

5.さらなる最適化

コードをさらに最適化するために、すべての情報をPHPファイルにハードコードしないように、言語ファイルにエラー情報を保存できます。各言語は、次のコンテンツを含むPHPファイルに対応しています。

en.php

 <span><span><span class="hljs-keyword">return</span></span><span> [
    </span><span><span class="hljs-string">'invalid_query'</span></span><span> =&gt; </span><span><span class="hljs-string">'There was an error with the SQL query.'</span></span><span>,
    </span><span><span class="hljs-string">'connection_failed'</span></span><span> =&gt; </span><span><span class="hljs-string">'Failed to connect to the database.'</span></span><span>,
    </span><span><span class="hljs-string">'unknown_error'</span></span><span> =&gt; </span><span><span class="hljs-string">'An unknown error occurred.'</span></span><span>,
];
</span></span>

zh.php

 <span><span><span class="hljs-keyword">return</span></span><span> [
    </span><span><span class="hljs-string">'invalid_query'</span></span><span> =&gt; </span><span><span class="hljs-string">'SQL クエリでエラーが発生しました。'</span></span><span>,
    </span><span><span class="hljs-string">'connection_failed'</span></span><span> =&gt; </span><span><span class="hljs-string">'データベース接続に失敗しました。'</span></span><span>,
    </span><span><span class="hljs-string">'unknown_error'</span></span><span> =&gt; </span><span><span class="hljs-string">'不明なエラーが発生しました。'</span></span><span>,
];
</span></span>

コードに対応する言語ファイルを動的にロードします。

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">loadErrorMessages</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$lang</span></span></span><span>) {
    </span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">"/lang/<span class="hljs-subst">{$lang}</span></span></span><span>.php";
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-keyword">include</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
    }

    </span><span><span class="hljs-comment">// 言語ファイルが存在しない場合,英語ファイルをロードします</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-keyword">include</span></span><span>(</span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/lang/en.php'</span></span><span>);
}

</span><span><span class="hljs-variable">$errorMessages</span></span><span> = </span><span><span class="hljs-title function_ invoke__">loadErrorMessages</span></span><span>(</span><span><span class="hljs-variable">$lang</span></span><span>);
</span></span>

このようにして、エラーメッセージが必要になるたびに、言語ファイルから対応するプロンプト情報をロードするだけです。

要約します

MySQLI :: $エラーとカスタム多言語エラープロンプトシステムを組み合わせることにより、さまざまなロケールのユーザーにより友好的なエラープロンプト情報を提供できます。多言語開発では、この方法を使用すると、データベースのエラー情報が直接公開され、ユーザーエクスペリエンスが向上します。