IP 주소에 사용할 MySQL 데이터 유형은 무엇입니까? [복제]
중복 가능성 :
mySQL에 IP를 저장하는 방법
$_SERVER['REMOTE_ADDR']다른 $_SERVER변수 에서 IP 주소를 얻고 싶습니다 . 어떤 데이터 유형이 이에 적합합니까?
그렇 VARCHAR(n)습니까?
IPv4 주소의 길이는 4 바이트이므로 정확히 4 바이트 인 INT( UNSIGNED) 를 사용할 수 있습니다 .
`ipv4` INT UNSIGNED
그리고 INET_ATON및 INET_NTOA변환합니다 :
INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;
IPv6 주소의 경우 BINARY대신 다음을 사용할 수 있습니다 .
`ipv6` BINARY(16)
그리고 PHPinet_pton 와 inet_ntop변환을 사용하십시오.
'INSERT INTO `table` (`ipv6`) VALUES ("'.mysqli_real_escape_string(inet_pton('2001:4860:a005::68')).'")'
'SELECT `ipv6` FROM `table`'
$ipv6 = inet_pton($row['ipv6']);
두 가지 가능성이 있습니다 (IPv4 주소의 경우).
- a
varchar(15), IP 주소를 문자열로 저장하려는 경우192.128.0.15예를 들어
integer(4 바이트), 당신은 정수로 IP 주소를 변환하는 경우3229614095이전에 사용한 IP의 경우
두 번째 솔루션은 데이터베이스에서 더 적은 공간을 필요로하며 데이터를 저장하고 검색 할 때 (문자열로 /로 변환) 약간의 조작을 암시하더라도 더 나은 선택 일 것 입니다.
그 조작 정보의보고 ip2long()와 long2ip()는 PHP 측에, 기능, 또는 inet_aton()및 inet_ntoa()MySQL의 측에.
IPv4 주소의 경우 VARCHAR을 사용하여 문자열로 저장할 수 있지만 긴 정수로 저장할 수도 있습니다 INT(11) UNSIGNED. MySQL의 INET_ATON()함수를 사용 하여 정수 표현으로 변환 할 수 있습니다 . 이것의 장점은 BETWEEN쿼리 와 같이 쉽게 비교할 수 있다는 것입니다.
참고 URL : https://stackoverflow.com/questions/5133580/which-mysql-datatype-to-use-for-an-ip-address
'developer tip' 카테고리의 다른 글
| JavaScript에서 객체를 반복하는 방법은 무엇입니까? (0) | 2020.09.03 |
|---|---|
| sed가 \ t를 탭으로 인식하지 않는 이유는 무엇입니까? (0) | 2020.09.03 |
| Java에서 소수점 구분 기호 ( ".") (0) | 2020.09.03 |
| Excel VBA에서 "! ="에 해당하는 것은 무엇입니까? (0) | 2020.09.03 |
| Windows의 Maven 2에서 Java 힙 공간 설정 (0) | 2020.09.03 |