麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

mysql 使用inet_aton和inet_ntoa處理ip地址數據的實例

2024-07-24 13:12:56
字體:
來源:轉載
供稿:網友

本文將介紹如何在數據庫中使用合適格式保存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) unsigned NOT 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) 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 * from `user`;+----+-----------+------------+| id | name  | ip   |+----+-----------+------------+| 2 | Abby  | 3232235777 || 3 | Daisy  | 2886732610 || 4 | Christine | 3698688780 |+----+-----------+------------+

查詢顯示為電地址

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

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 ip from `user` where ip>=2886732545 and 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地址數據的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 女人叉开腿让男人桶 | 在线播放黄色网址 | 羞羞视频.www在线观看 | 久久久久久久久久久久久久久伊免 | 激情网站免费观看 | 涩涩伊人| 黄色美女网站免费看 | 91久久精品国产亚洲 | 奇米888一区二区三区 | 免费一级电影 | 九九热视频在线免费观看 | 久久午夜神器 | 99欧美精品 | 国产精品久久久久久久久久三级 | 综合毛片 | 久久久久久久久久美女 | 国产一区二区精品免费 | 99视频在线观看视频 | 成年性羞羞视频免费观看无限 | 国产无限资源在线观看 | 双性精h调教灌尿打屁股的文案 | 91九色视频 | 午夜精品老牛av一区二区三区 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 成人不卡一区二区 | 成人做爰高潮片免费视频美国 | 麻豆视频观看 | 亚洲最新色 | 毛片a级毛片免费播放100 | 亚洲第一页综合 | 久久久一区二区精品 | 欧美成人精品一区二区男人小说 | 黄色欧美精品 | 国产va在线观看 | 羞羞视频免费入口网站 | 91精品国产乱码久久久久久久久 | 97中文字幕第一一一页 | 日本成人午夜 | 在线播放黄色网址 | 日日狠狠久久 | 九九热视频这里只有精品 |