本文将介绍如何在数据库中使用合适格式保存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地址相关推荐

  1. DHCP原理及服务器搭建详解(固定IP地址,DHCP中继服务)

    DHCP原理及服务器搭建详解 一.引子: DHCP在网络中的作用非常重要,简单来说就像给每台服务器配身份证的机构,你有合格的身份才能做合格的事情,要不然连火车都坐不了.服务器只有被DHCP服务配置了I ...

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

  3. mysql xid原理_MySQL数据库分布式事务XA实现原理分析

    [IT168 技术]MySQL XA原理 MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布 ...

  4. mysql 删除原理_MySQL权限原理及删除MySQL的匿名账户

    MySQL权限系统的工作原理 MySQL权限系统通过下面两个阶段进行认证: (1)对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接: (2)对通过认证的合法用户赋予相应的权限,用户可 ...

  5. mysql连接自己的ip地址_mysql 连接字符串 远程连接用IP地址 而非只是localhost时

    需要远程机器访问连接某mysql数据库,结果提示[MySQL][ODBC 5.1 Driver]Can't connect to MySQL server on '192.168.1.101' (10 ...

  6. 【mysql基础知识】解决java连接mysql时将localhost改为本机的ip地址后失败问题

    查了很多资料,终于找到了原因. 需要修改mysql的权限. 转载自:https://blog.csdn.net/daicaho/article/details/81156855 ----------- ...

  7. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

  8. mysql 索引 原理_MySQL索引实现原理分析

    目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构.B+Tree是数据库系统实现索引的首选数据结构.在MySQL中,索引属于存储引擎级别的概念,不同存储 ...

  9. java mysql实现原理_MySQL事务实现原理

    MySQL事务隔离级别的实现原理 知识储备 只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修改.这会带来脏 ...

最新文章

  1. DISPLAY环境变量的作用
  2. 如何调整mintty行距及字间距
  3. [转] fedora linux下安装vmware tools的最好方法
  4. (运维)VMware-vCenter-Server-update Management
  5. python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
  6. 识别产品外观的合格软件_你还在犹豫?外观检测设备使用已成主流!
  7. 理解JavaScript里this关键字
  8. 报错,void AcceptAndReadAvailableTracks(const QString param, int timeout)
  9. docker学习记录
  10. linux的常用的软件,Linux常用的软件和命令
  11. Scala的函数式编程
  12. 声卡loopback有什么用_sam机架宿主软件无法获取声卡ASIO问题解析
  13. Ubuntu更新显卡驱动及安装多版本cuda
  14. 智能快递柜解决方案及整套源代码
  15. 魏晋名士:骂人都不带脏字
  16. php创建微信公众号管理系统-序言
  17. JAVA缴税_根据工资和税率计算应缴税(java)
  18. JAVA通过COM接口操作PPT
  19. 《基于微信小程序的美食推荐系统》硕士论文
  20. JAVA网课|字符串

热门文章

  1. 智慧CAD手机看图隐私政策
  2. schedule定时任务
  3. 绿色版的谷歌浏览器chrome
  4. Windows上的巧克力味Chocolatey详解
  5. JSON.stringify()和JSON.parse()
  6. 2023最新红色风格电脑手机数码商城系统网站源码+仿华为商城UI开发
  7. 无响应 --- 问题事件名称: AppHangB1
  8. 2022-2-14至2022-2-19周报
  9. C#如何立即回收内存
  10. 花园多层住宅设计CAD施工图教程分享