sql >> Base de Datos >  >> RDS >> Mysql

¿Qué tipo de datos MySQL usar para una dirección IP?

Dado que las direcciones IPv4 tienen una longitud de 4 bytes, puede usar un INT (UNSIGNED ) que tiene exactamente 4 bytes:

`ipv4` INT UNSIGNED

Y INET_ATON y INET_NTOA para convertirlos:

INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;

Para las direcciones IPv6, puede usar un BINARY en cambio:

`ipv6` BINARY(16)

Y use inet_pton de PHP y inet_ntop para conversión:

'INSERT INTO `table` (`ipv6`) VALUES ("'.mysqli_real_escape_string(inet_pton('2001:4860:a005::68')).'")'
'SELECT `ipv6` FROM `table`'
$ipv6 = inet_pton($row['ipv6']);