Maison  >  Article  >  développement back-end  >  Comment utiliser inet_aton et inet_ntoa pour traiter les données d'adresse IP via MySQL

Comment utiliser inet_aton et inet_ntoa pour traiter les données d'adresse IP via MySQL

jacklove
jackloveoriginal
2018-06-09 10:14:131438parcourir

Cet article explique comment utiliser un format approprié pour enregistrer les données d'adresse IP dans la base de données et comparer facilement les adresses IP.

1. Enregistrez l'adresse IP dans la base de données

Enregistrez l'adresse IP dans la base de données. Les champs sont généralement définis comme :

`ip` char(15) NOT NULL,

Étant donné que la longueur maximale de l'adresse IP (255.255.255.255) est de 15, l'utilisation de caractères de 15 bits est suffisante.

Créer un utilisateur de table

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `ip` char(15) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Insérer plusieurs données

INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', '192.168.1.1'),
(3, 'Daisy', '172.16.11.66'),
(4, 'Christine', '220.117.131.12');

2 Méthodes .mysql inet_aton et inet_ntoa

mysql fournit deux méthodes pour gérer les adresses IP

inet_aton transfert ip C'est un type entier non signé (4-8 bits)
inet_ntoa Convertissez l'adresse IP entière en une adresse électrique

Avant d'insérer des données, utilisez inet_atonConvertissez l'adresse IP en un entier pour économiser de l'espace, car char(15) occupe 16 octets. Lors de l'affichage des données, utilisez
inet_ntoa pour convertir l'adresse IP entière en une adresse électrique à afficher.

Exemple :

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `ip` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Insérer plusieurs données

INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', inet_aton('192.168.1.1')),
(3, 'Daisy', inet_aton('172.16.11.66')),
(4, 'Christine', inet_aton('220.117.131.12'));
mysql> select * from `user`;
+----+-----------+------------+| id | name      | ip         |
+----+-----------+------------+|  2 | Abby      | 3232235777 |
|  3 | Daisy     | 2886732610 ||  4 | Christine | 3698688780 |
+----+-----------+------------+

La requête affiche l'adresse e-mail

mysql> select id,name,inet_ntoa(ip) as ip from `user`;
+----+-----------+----------------+| id | name      | ip             |
+----+-----------+----------------+|  2 | Abby      | 192.168.1.1    |
|  3 | Daisy     | 172.16.11.66   ||  4 | Christine | 220.117.131.12 |
+----+-----------+----------------+

Méthode de comparaison

Si vous avez besoin de connaître les utilisateurs dans un certain segment de réseau (par exemple : 172.16.11.1 ~ 172.16.11.100), vous pouvez utiliser la méthode ip2long de PHP pour convertir l'adresse IP. en un entier, puis effectuez une comparaison.

6f0ae2a3f34ecd991e57660263d12ee5

Requête :

mysql> select ip,name,inet_ntoa(ip) as ip from `user` where ip>=2886732545 and ip<=2886732644;
+------------+-------+---------------+| ip         | name  | ip            |
+------------+-------+---------------+| 2886732610 | Daisy | 172.16.11.66  |
+------------+-------+---------------+

Remarque : utilisez la méthode ip2long pour convertir l'adresse IP en un entier Quand, des nombres négatifs apparaîtront pour les grandes IP. Pour les raisons et les solutions, veuillez vous référer à mon autre article : "Causes et solutions des nombres négatifs dans php ip2long"

4. Résumé

1. Enregistrez l'adresse IP dans la base de données au format int non signé lors de l'insertion, utilisez la méthode inet_aton pour convertir d'abord l'adresse IP en un entier non signé, ce qui peut économiser de l'espace de stockage. 2. Utilisez inet_ntoa pour convertir l'adresse IP entière en adresse électrique lors de l'affichage.
3. Lors de la conversion de ip2long en ip en type entier, vous devez faire attention à l'apparition de nombres négatifs.

Cet article explique comment utiliser inet_aton et inet_ntoa pour traiter les données d'adresse IP via MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web chinois php.

Recommandations associées :

Contenu associé sur l'utilisation de la sortie de compression gzip des données php json

Comment utiliser http_build_query via php , parse_url, parse_str crée et analyse l'url

Comment implémenter la fonction shake via html5

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn