Mysql应用mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例
《Mysql应用mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例》要点: MYSQL入门本文将介绍如安在数据库中使用合适格式保存ip地址数据,并能方便的对ip地址进行比较的方法. MYSQL入门1、保留ip地址到数据库 MYSQL入门数据库中保留ip地址,字段一般会定义为: MYSQL入门`ip` char(15) NOT NULL, MYSQL入门因为ip地址(255.255.255.255)的最大长度是15,使用15位char已足够. MYSQL入门创建表user MYSQL入门
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;
MYSQL入门插入几条数据 MYSQL入门
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');
MYSQL入门2、mysql inet_aton 与 inet_ntoa 办法 MYSQL入门mysql提供了两个办法来处理ip地址 MYSQL入门inet_aton 把ip转为无符号整型(4-8位) MYSQL入门inet_ntoa 把整型的ip转为电地址 MYSQL入门插入数据前,先用inet_aton把ip地址转为整型,可以节省空间,因为char(15) 占16字节. MYSQL入门显示数据时,使用inet_ntoa把整型的ip地址转为电地址显示即可. MYSQL入门例子: MYSQL入门
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,`ip` int(10) unsigned NOT NULL,inet_aton('192.168.1.1')),inet_aton('172.16.11.66')),inet_aton('220.117.131.12'));
mysql> select * from `user`;
+----+-----------+------------+
| id | name | ip |
+----+-----------+------------+
| 2 | Abby | 3232235777 |
| 3 | Daisy | 2886732610 |
| 4 | Christine | 3698688780 |
+----+-----------+------------+
MYSQL入门查询显示为电地址 MYSQL入门
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 |
+----+-----------+----------------+
MYSQL入门3、比较办法 MYSQL入门如果需要找出在某个网段的用户(例如:172.16.11.1 ~ 172.16.11.100),可以利用php的ip2long办法,把ip地址转为整型,再进行比较. MYSQL入门
<?php
$ip_start = '172.16.11.1';
$ip_end = '172.16.11.100';
echo 'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545
echo 'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644
?>
MYSQL入门查询: MYSQL入门
mysql> select ip,inet_ntoa(ip) as ip from `user` where ip>=2886732545 and ip<=2886732644;
+------------+-------+---------------+
| ip | name | ip |
+------------+-------+---------------+
| 2886732610 | Daisy | 172.16.11.66 |
+------------+-------+---------------+
MYSQL入门注意:使用ip2long办法把ip地址转为整型时,对于大的ip会出现负数,出现原因及处理办法可以参考我另一篇文章:《详谈php ip2long 出现负数的原因及解决办法》 MYSQL入门4、总结 MYSQL入门1、保存ip地址到数据库,使用unsigned int格式,插入时使用inet_aton办法把ip先转为无符号整型,可以节省存储空间. MYSQL入门2、显示时使用inet_ntoa把整型ip地址转为电地址. MYSQL入门3、php ip2long转ip为整型时,必要注意出现负数. MYSQL入门以上这篇mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例便是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家PHP. 《Mysql应用mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例》是否对您有启发,欢迎查看更多与《Mysql应用mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |