mysql-php使用整型保存IP地址

2016-07-18  本文已影响0人  Cesc90

在MySQL中没有直接提供IP类型字段,但有两个函数可以把IP与最大长度为10位数字类型互转,所以使用unsigned int类型存储IP比varchar类型存储IP地址性能要提升很多,减少不少空间(因为varchar是可变长形,需要多余的一个字节存储长度),另外int型在逻辑运算上要比varchar速度快。


mysql实现

IP转数字函数 inet_aton()

    mysql>  select inet_aton( '255.255.255.255' );//输出4294967295

所以IP的表字段可以设置为INT(10)就好,如果IP获取不到可以直接存0。

数字转IP函数 inet_ntoa()

    mysql> select inet_ntoa(4294967295);//输出255.255.255.255

注意,0转换为 0.0.0.0


php实现

****IP转数字函数 ip2long()**

<?php echo sprintf("%u\n", ip2long("157.23.56.90"));//输出2635544666

数字转IP函数 long2ip()

<?php$ip_long = 2635544666;echo long2ip($ip_long) . "\n";//输出157.23.56.90
上一篇 下一篇

猜你喜欢

热点阅读