mysql inet_aton 原理_mysql 使用inet_aton和inet_ntoa处理ip地址
本文将介绍如何在数据库中使用合适格式保存ip地址数据,并能方便的对ip地址进行比较的方法。
1、保存ip地址到数据库
数据库中保存ip地址,字段一般会定义为:
`ip` char(15) NOT NULL,
因为ip地址(255.255.255.255)的最大长度是15,使用15位char已足够。
创建表user
?CREATE TABLE `user` (`id`int(11) unsignedNOT NULL AUTO_INCREMENT,`name`varchar(30)NOT NULL,`ip`char(15)NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB;
插入几条数据
?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、mysql inet_aton 与 inet_ntoa 方法
mysql提供了两个方法来处理ip地址
inet_aton把ip转为无符号整型(4-8位)
inet_ntoa把整型的ip转为电地址
插入数据前,先用inet_aton把ip地址转为整型,可以节省空间,因为char(15) 占16字节。
显示数据时,使用inet_ntoa把整型的ip地址转为电地址显示即可。
例子:
?CREATE TABLE `user` (`id`int(11) unsignedNOT NULL AUTO_INCREMENT,`name`varchar(100)NOT NULL,`ip`int(10) unsignedNOT 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 *from `user`;+----+-----------+------------+| id |name | ip |+----+-----------+------------+| 2 | Abby | 3232235777 || 3 | Daisy | 2886732610 || 4 | Christine | 3698688780 |+----+-----------+------------+
查询显示为电地址
?mysql>select id,name,inet_ntoa(ip)as ipfrom `user`;+----+-----------+----------------+| id |name | ip |+----+-----------+----------------+| 2 | Abby | 192.168.1.1 || 3 | Daisy | 172.16.11.66 || 4 | Christine | 220.117.131.12 |+----+-----------+----------------+
3、比较方法
如果需要找出在某个网段的用户(例如:172.16.11.1 ~ 172.16.11.100),可以利用php的ip2long方法,把ip地址转为整型,再进行比较。
?<?php $ip_start ='172.16.11.1';$ip_end ='172.16.11.100'; echo'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545echo'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644?>
查询:
?mysql>select ip,name,inet_ntoa(ip)as ipfrom `user`where ip>=2886732545and ip<=2886732644;+------------+-------+---------------+| ip |name | ip |+------------+-------+---------------+| 2886732610 | Daisy | 172.16.11.66 |+------------+-------+---------------+
注意:使用ip2long方法把ip地址转为整型时,对于大的ip会出现负数,出现原因及处理方法可以参考我另一篇文章:《详谈php ip2long 出现负数的原因及解决方法》
4、总结
1、保存ip地址到数据库,使用unsigned int格式,插入时使用inet_aton方法把ip先转为无符号整型,可以节省存储空间。
2、显示时使用inet_ntoa把整型ip地址转为电地址。
3、php ip2long转ip为整型时,需要注意出现负数。
以上这篇mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
mysql inet_aton 原理_mysql 使用inet_aton和inet_ntoa处理ip地址相关推荐
- DHCP原理及服务器搭建详解(固定IP地址,DHCP中继服务)
DHCP原理及服务器搭建详解 一.引子: DHCP在网络中的作用非常重要,简单来说就像给每台服务器配身份证的机构,你有合格的身份才能做合格的事情,要不然连火车都坐不了.服务器只有被DHCP服务配置了I ...
- 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 NUL ...
- mysql xid原理_MySQL数据库分布式事务XA实现原理分析
[IT168 技术]MySQL XA原理 MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布 ...
- mysql 删除原理_MySQL权限原理及删除MySQL的匿名账户
MySQL权限系统的工作原理 MySQL权限系统通过下面两个阶段进行认证: (1)对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接: (2)对通过认证的合法用户赋予相应的权限,用户可 ...
- mysql连接自己的ip地址_mysql 连接字符串 远程连接用IP地址 而非只是localhost时
需要远程机器访问连接某mysql数据库,结果提示[MySQL][ODBC 5.1 Driver]Can't connect to MySQL server on '192.168.1.101' (10 ...
- 【mysql基础知识】解决java连接mysql时将localhost改为本机的ip地址后失败问题
查了很多资料,终于找到了原因. 需要修改mysql的权限. 转载自:https://blog.csdn.net/daicaho/article/details/81156855 ----------- ...
- mysql show 原理_mysql事务的实现原理
此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中 有一个整体的认识,如下图 如上图所示, ...
- mysql 索引 原理_MySQL索引实现原理分析
目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构.B+Tree是数据库系统实现索引的首选数据结构.在MySQL中,索引属于存储引擎级别的概念,不同存储 ...
- java mysql实现原理_MySQL事务实现原理
MySQL事务隔离级别的实现原理 知识储备 只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修改.这会带来脏 ...
最新文章
- DISPLAY环境变量的作用
- 如何调整mintty行距及字间距
- [转] fedora linux下安装vmware tools的最好方法
- (运维)VMware-vCenter-Server-update Management
- python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
- 识别产品外观的合格软件_你还在犹豫?外观检测设备使用已成主流!
- 理解JavaScript里this关键字
- 报错,void AcceptAndReadAvailableTracks(const QString param, int timeout)
- docker学习记录
- linux的常用的软件,Linux常用的软件和命令
- Scala的函数式编程
- 声卡loopback有什么用_sam机架宿主软件无法获取声卡ASIO问题解析
- Ubuntu更新显卡驱动及安装多版本cuda
- 智能快递柜解决方案及整套源代码
- 魏晋名士:骂人都不带脏字
- php创建微信公众号管理系统-序言
- JAVA缴税_根据工资和税率计算应缴税(java)
- JAVA通过COM接口操作PPT
- 《基于微信小程序的美食推荐系统》硕士论文
- JAVA网课|字符串