현재 위치: > 최신 기사 목록> MySQLI :: $ 오류를 결합하여 다중 언어 환경에서 오류 프롬프트 기능을 구현하는 방법은 무엇입니까?

MySQLI :: $ 오류를 결합하여 다중 언어 환경에서 오류 프롬프트 기능을 구현하는 방법은 무엇입니까?

M66 2025-07-18

mysqli :: $ error 란 무엇입니까?

PHP에서 MySQLI 확장은 MySQL 데이터베이스와 상호 작용하는 데 사용됩니다. 데이터베이스 쿼리를 실행할 때 MySQLI :: $ 오류 속성은 현재 연결된 MySQL 데이터베이스에서 반환 한 오류 메시지를 제공합니다. 쿼리가 실패하면 MySQLI :: $ Error는 MySQL이 반환 한 오류 정보를 저장하고 개발자는이 속성을 사용하여 오류 처리 및 디버깅을 수행 할 수 있습니다.

다국어 애플리케이션에서 MySQL 오류 메시지를 직접 사용하는 것은 일반적으로 영어 또는 기술적 설명에 있으며 일반 사용자가 읽는 데 적합하지 않기 때문에 사용자에게 표시하는 데 적합하지 않습니다. 따라서 MySQLI :: $ 오류를 결합하여 다국어를 지원하는 오류 프롬프트를 구축해야합니다.

다국어 오류 프롬프트를 구현하는 방법

다국어 오류 프롬프트 기능을 구현하는 핵심은 사용자의 언어 환경 설정을 통해 오류 정보를 동적으로 선택하는 데 있습니다. 몇 가지 주요 단계는 다음과 같습니다.

1. 사용자 언어를 얻으십시오

먼저 사용자의 언어 설정을 가져와야합니다. 일반적으로 사용자 언어 설정은 세션에 저장되거나 브라우저의 허용 요청 헤더를 통해 얻습니다. 단순화하기 위해 언어는 이미 $ _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 :: $ 오류 와 사용자 정의 다국어 오류 프롬프트 시스템을 결합하면 다른 로컬의 사용자에게보다 친숙한 오류 프롬프트 정보를 제공 할 수 있습니다. 다국어 개발 에서이 방법을 사용하면 데이터베이스의 오류 정보를 직접 노출시키지 않고 사용자 경험을 향상시킬 수 있습니다.