MysSql 存储ip地址

mysql提供了两个方法来处理ip地址:

inet_aton把ip转为无符号整型(4-8位)inet_ntoa把整型的ip转为电地址

插入数据前,先用inet_aton把ip地址转为整型,可以节省空间。

显示数据时,使用inet_ntoa把整型的ip地址转为电地址显示即可。为社么这样存?,性能上的提示比直接存储字符串的IP要高出很多。

示例:

CREATETABLE`t_user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(15)DEFAULTNULLCOMMENT'用户名',`ip`bigint(20)DEFAULTNULLCOMMENT'IP地址', PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;

插入几条数据:

INSERTINTO`t_user`(`id`,`name`,`ip`)VALUES(2,'babala',inet_aton('127.0.0.1') ), (3,'maly',inet_aton('192.168.1.1') ), (4,'kaven',inet_aton('111.175.7.143') );

查询显示地址:

select id,name,inet_ntoa(ip) as ip from`t_user`;

如果需要找出在某个网段的用户(例如:192.168.1.1 ~ 192.168.1.100),可以利用php的ip2long方法,把ip地址转为整型,再进行比较。

$ip_start ='192.168.1.1';$ip_end ='192.168.1.100';echosprintf('%u',ip2long($ip_start)).PHP_EOL;// 3232235777echosprintf('%u',ip2long($ip_end)).PHP_EOL;// 3232235876

总结

1.保存ip地址到数据库,使用unsigned int格式,插入时使用inet_aton方法把ip先转为无符号整型,可以节省存储空间。

2.显示时使用inet_ntoa把整型ip地址转为电地址。

3.php 使用 ip2long转ip为整型时,需要注意出现负数的问题(如果出现负数:参照之前我写的这篇)

每天都在分享文章,也每天都有人想要我出来给大家分享下怎么去学习Java。大家都知道,我们是学Java全栈的,大家就肯定以为我有全套的Java系统教程。没错,我是有Java全套系统教程,进扣裙【47】974【9726】所示,进群的时候记得表明自己想要学习什么,不要用小号,这样小编才好给你们发定向资源,今天小编就免费送!~

“我们相信人人都可以成为一个程序员,现在开始,找个师兄,带你入门,学习的路上不再迷茫。这里是ja+va修真院,初学者转行到互联网行业的聚集地。"

你可能感兴趣的:(MysSql 存储ip地址)