婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql 使用inet_aton和inet_ntoa處理ip地址數據的實例

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

熱門標簽:電銷機器人公眾號推送 南宋地圖標注黃河華山 地圖標注培訓 電銷機器人說明書 智能電銷機器人靠譜么 安國在哪里辦理400電話 手機用地圖標注工具 昆明智能外呼系統中心 長安區違法建房地圖標注

本文將介紹如何在數據庫中使用合適格式保存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)); // 2886732545
echo '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地址數據的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL存儲IP地址的方法
  • mysql跨數據庫復制表(在同一IP地址中)示例
  • 將IP地址轉換為整型數字的PHP方法、Asp方法和MsSQL方法、MySQL方法
  • 利用mysql的inet_aton()和inet_ntoa()函數存儲IP地址的方法分享
  • MySql通過ip地址進行訪問的方法

標簽:長沙 吉安 武漢 江門 潛江 合肥 南昌 東莞

巨人網絡通訊聲明:本文標題《mysql 使用inet_aton和inet_ntoa處理ip地址數據的實例》,本文關鍵詞  mysql,使用,inet,aton,和,ntoa,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql 使用inet_aton和inet_ntoa處理ip地址數據的實例》相關的同類信息!
  • 本頁收集關于mysql 使用inet_aton和inet_ntoa處理ip地址數據的實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 天镇县| 永靖县| 潞城市| 新泰市| 公安县| 玛纳斯县| 桓仁| 黄陵县| 盐池县| 上林县| 永善县| 海伦市| 北宁市| 沿河| 巴东县| 微山县| 普格县| 聂拉木县| 亚东县| 禄劝| 南雄市| 屯门区| 饶平县| 方城县| 东丰县| 汉沽区| 孝昌县| 建始县| 常熟市| 陆良县| 周宁县| 安图县| 漾濞| 巴南区| 正镶白旗| 武功县| 柳州市| 汉中市| 咸宁市| 常宁市| 黑龙江省|