MySQL 데이터베이스 작업에 PHP를 사용하는 경우 MySQL_GET_HOST_INFO ()는 현재 MYSQL 연결의 호스트 정보 (예 : 서버의 호스트 이름 및 연결 방법)를 얻는 일반적인 기능입니다. 그러나 실제 개발 중에는 사용될 때 예측할 수없는 오류를 피하기 위해이 연결이 유효한지 확인해야합니다.
먼저 mysql_get_host_info () 함수의 기본 사용을 간략하게 이해해 봅시다. 연결의 호스트 이름 및 사용 된 프로토콜과 같은 현재 MySQL 연결의 호스트 정보를 나타내는 문자열을 반환합니다.
<span><span><span class="hljs-variable">$host_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_get_host_info</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$host_info</span></span><span>;
</span></span>여기서 $ 링크 는 유효한 MySQL 연결 자원이며 함수는 "TCP/IP를 통해 LocalHost" 와 같은 문자열을 반환합니다.
PHP에서 MySQL 연결이 유효한지 확인하는 것은 특히 복잡한 응용 프로그램을 개발할 때 일반적인 요구 사항입니다. mysql_get_host_info () 는 유효한 MySQL 연결에 의존하므로 함수를 호출하기 전에 연결을 설정하고 사용할 수 있는지 확인해야합니다.
mysql_ping ()은 MySQL 연결이 유효한지 확인하는 간단하고 직접적인 방법입니다. 연결이 손실되거나 사용할 수없는 경우 MySQL_Ping ()은 다시 연결하려고 시도합니다. 다시 연결이 실패하면 False가 반환됩니다.
<span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$link</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'Could not connect: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysql_error</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-title function_ invoke__">mysql_ping</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MySQL 연결이 유효합니다!"</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-string">"MySQL 잘못된 연결!"</span></span><span>;
}
</span></span>위의 예에서는 mysql_ping () 이 기존 연결이 유효한지 확인하고 자동으로 다시 연결하려고 시도합니다. 연결이 유효 한 경우 MySQL_GET_HOST_INFO ()를 계속 사용할 수 있습니다.
실제 응용 프로그램에서는 mysql_get_host_info ()를 사용하기 전에 데이터베이스 연결이 비어 있는지 확인할 수 있습니다. 간단한 확인 논리는 다음과 같습니다.
<span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$link</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'Could not connect: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysql_error</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-title function_ invoke__">is_resource</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>)) {
</span><span><span class="hljs-variable">$host_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_get_host_info</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"연결된 호스트 정보: "</span></span><span> . </span><span><span class="hljs-variable">$host_info</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-string">"MySQL 잘못된 연결!"</span></span><span>;
}
</span></span>이 예에서는 IS_RESOURCE ()를 사용하여 $ 링크가 유효한 리소스인지 확인합니다. 유효한 연결 리소스 인 경우 MySQL_GET_HOST_INFO () 함수를 호출 할 수 있습니다. 그렇지 않으면 연결이 유효하지 않은 프롬프트를 호출 할 수 있습니다.
MySQL_* 시리즈 기능이 버려졌으며 새로운 PHP 프로젝트에 사용하는 것이 권장되지는 않지만 많은 개발자들이 여전히이를 사용할 것입니다. 보다 강력하고 안전한 기능을 제공하는 MySQLI 또는 PDO 확장을 사용하는 것이 좋습니다. 다음은 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">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// 사용 mysqli 호스트 정보를 확인하려면 연결하십시오</span></span><span>
</span><span><span class="hljs-variable">$host_info</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_host_info</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"연결된 호스트 정보: "</span></span><span> . </span><span><span class="hljs-variable">$host_info</span></span><span>;
</span></span>MySQLI는 내장 오류 처리 및보다 유연한 연결 방법을 제공하여 대부분의 경우 MySQL_* 시리즈 기능을 대체 할 수 있습니다.
연결을 확인할 때 특히 복잡한 응용 프로그램에서 잠재적 오류를 포착하기 위해 예외 처리를 사용하는 것이 가장 좋습니다. 이는 코드의 견고성을 향상시키고 연결이 잘못된 연결 작업으로 인해 프로그램 충돌을 피할 수 있습니다.
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$link</span></span><span>) {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">'연결이 실패했습니다: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysql_error</span></span><span>());
}
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">mysql_ping</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>)) {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">'MySQL 잘못된 연결!'</span></span><span>);
}
</span><span><span class="hljs-variable">$host_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_get_host_info</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"연결된 호스트 정보: "</span></span><span> . </span><span><span class="hljs-variable">$host_info</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'실수: '</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>Try-Catch 구조를 통해 연결 중에 발생하는 예외를 포착하고 처리 할 수 있으며, 후속 코드 실행에 영향을 미치지 않으면 서 연결에 실패하면 상세한 오류 정보를 얻을 수 있습니다.
mysql_get_host_info () 는 매우 유용한 기능이지만 연결의 유효성을 사용하기 전에 중요합니다. mysql_ping () 및 is_resource () 와 같은 메소드를 사용하면 런타임시 연결 고장 문제를 피하기 위해 MySQL 연결 상태를 확인할 수 있습니다.
PHP 버전의 지속적인 업그레이드를 사용하면 더 나은 오류 처리 및 성능을 제공 할뿐만 아니라보다 유연한 기능을 제공하는보다 최신 데이터베이스 액세스 확장 (예 : MySQLI 또는 PDO )을 사용하는 것이 좋습니다.