Puisque les adresses IPv4 sont 4 octets de long, vous pouvez utiliser une INT
(UNSIGNED
) qui a exactement 4 octets:
`ipv4` INT UNSIGNED
et INET_ATON
et INET_NTOA
pour les convertir:
INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;
Pour IPv6, vous pouvez utiliser un adresses BINARY
à la place:
`ipv6` BINARY(16)
Et utiliser PHP’s inet_pton
et inet_ntop
pour la conversion:
'INSERT INTO `table` (`ipv6`) VALUES ("'.mysqli_real_escape_string(inet_pton('2001:4860:a005::68')).'")'
'SELECT `ipv6` FROM `table`'
$ipv6 = inet_pton($row['ipv6']);
Voir ce ([discussion] http://forums.mysql.com/read. php? 21,49094,49094 # msg-49094) – Ragnar123
Je ne suis pas d'accord qu'il s'agit d'une question en double, puisque l'autre question est spécifiquement une question liée à la performance pour stocker un très grand nombre d'adresses IP. La réponse à cette question peut ne pas être pertinente pour quelqu'un qui n'est pas intéressé par la maximisation de l'utilisation de l'espace ou de la performance. – User
@User J'ai posé cette question il y a environ un an et demi;) Mais merci de partager votre opinion. – ComFreek