Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP에서 MySQL UNHEX() 함수를 대체하는 방법: hex2bin() 완벽 정리

MySQL UNHEX()에 해당하는 PHP 함수는 무엇일까?

PHP에서 MySQL의 UNHEX() 함수와 동일한 기능을 수행하는 함수는 바로 hex2bin()입니다. 이 함수는 16진수 문자열을 원래의 이진 데이터(바이너리)로 변환해 주며, PHP 5.4.0부터 기본으로 제공됩니다.

hex2bin() 기본 문법

$anyVariableName = hex2bin("yourHexadecimalValue");

16진수 값을 인자로 전달하면, 해당 값이 디코딩되어 원본 문자열 또는 바이너리 데이터로 반환됩니다. 만약 유효하지 않은 16진수 문자열이 입력되면 false를 반환하고, PHP 7.4 이상에서는 경고(Warning)가 발생할 수 있습니다.

PHP 예제 코드

실제로 hex2bin() 함수를 사용하는 예제를 살펴보겠습니다.

$myFirstValue = hex2bin("7777772E4D7953514C4578616D706C652E636F6D");
var_dump($myFirstValue);

$mySecondValue = hex2bin("416476616E6365644A617661576974684672616D65776F726B");
echo('<br>');
var_dump($mySecondValue);

실행 결과

string(18) "www.MySQLExample.com"
string(25) "AdvancedJavaWithFramework"

첫 번째 16진수 값은 "www.MySQLExample.com"으로, 두 번째 값은 "AdvancedJavaWithFramework"로 정상적으로 변환된 것을 확인할 수 있습니다.

MySQL UNHEX() 함수와 결과 비교하기

동일한 16진수 값을 MySQL의 UNHEX() 함수에 적용하면 PHP와 완전히 같은 결과를 얻을 수 있습니다.

Case 1 — www.MySQLExample.com 변환

다음과 같은 쿼리를 실행합니다.

mysql> SELECT UNHEX("7777772E4D7953514C4578616D706C652E636F6D");

실행 결과는 다음과 같습니다.

+---------------------------------------------------+
| UNHEX("7777772E4D7953514C4578616D706C652E636F6D") |
+---------------------------------------------------+
| www.MySQLExample.com |
+---------------------------------------------------+
1 row in set (0.00 sec)

Case 2 — AdvancedJavaWithFramework 변환

두 번째 쿼리도 살펴보겠습니다.

mysql> SELECT UNHEX("416476616E6365644A617661576974684672616D65776F726B");

실행 결과는 다음과 같습니다.

+-------------------------------------------------------------+
| UNHEX("416476616E6365644A617661576974684672616D65776F726B") |
+-------------------------------------------------------------+
| AdvancedJavaWithFramework |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

정리

MySQL의 UNHEX()와 PHP의 hex2bin()은 동일한 16진수 디코딩 작업을 수행하므로, 두 환경 간에 데이터를 주고받을 때 결과가 일치함을 보장합니다. 다만 PHP에서 hex2bin()은 유효하지 않은 입력에 대해 false를 반환하므로, 실무에서는 반드시 반환값 검증 처리를 함께 해주는 것이 좋습니다.