zoukankan      html  css  js  c++  java
  • mysql 使用inet_aton和inet_ntoa处理ip地址数据

    创建表
    <pre>
    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;
    </pre>


    插入几条数据
    <pre>

    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'));
    </pre>

    查询显示为电地址
    <pre>

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

    比较方法
    如果需要找出在某个网段的用户(例如:172.16.11.1 ~ 172.16.11.100),可以利用PHP的ip2long方法,把ip地址转为整型,再进行比较。
    <pre>
    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 |
    +------------+-------+---------------+
    </pre>


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


    <pre>
    <?php
    $ip = '192.168.101.100';
    $ip_long = sprintf('%u',ip2long($ip));
    echo $ip_long.PHP_EOL;
    ?>
    </pre>

  • 相关阅读:
    Linux共享对象之编译参数fPIC
    如果重新设计网络,有没有可能合并IP地址跟MAC地址?
    HTTP的长连接和短连接
    Icon资源详解[2]
    Icon资源详解[1]
    LZMA demo挑选使用备忘
    SSM 拦截器验证权限和登录与注销的实现
    Intellij idea workflow 工作流插件安装
    C# HttpWebRequest post 请求传参数
    PLSQL 11注册码
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11865550.html
Copyright © 2011-2022 走看看