mysql inet aton ipv6_mysql 使用inet_aton和inet_ntoa处理ip地址数据

创建表

 
 

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;

插入几条数据

 
 

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 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 |

+----+-----------+----------------+

比较方法

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

 
 

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 |

+------------+-------+---------------+

注意:使用ip2long方法把ip地址转为整型时,对于大的ip会出现负数,采取如下方案

 
 

$ip = '192.168.101.100';

$ip_long = sprintf('%u',ip2long($ip));

echo $ip_long.PHP_EOL;

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值