php - 我如何检查包含 ip 地址(inet_aton)的 php 变量($stat_ip)是否位于两个 ip(inet_aton 格式)的范围内

标签 php mysql

//变量 $stat_ip 位于表 Hasoffers 中,要检查它是否位于列值 network_start_ip 和 network_end_ip 之间,后者位于另一个名为 Blacklisted 的表中。我需要编写一个函数来帮助我做同样的事情通过访问所有三个。

 <?php
        include('adodb/adodb.inc.php');
        mysql_connect("*****","***","***");
        mysql_select_db("********");
        $pl=mysql_query("SELECT stat_ip,stat_session_ip FROM Hasoffers");
        $count=mysql_num_rows($pl)

            while($row=mysql_fetch_array($pl))
              {
               $stat_ip=$row['stat_ip'];

               echo fn($stat_ip)."<br>";
              }

          $bip=mysql_query("SELECT inet_aton(network_start_ip),inet_aton(network_end_ip) FROM blacklisted");

          while($array=mysql_fetch_array($bip))
          {
            $start_ip=$array['network_Start_ip'];
            $end_ip = $array['netwrok_end_ip'];

          }


          function fn($stat_ip)
             {
                $result =mysql_query('SELECT stat_ip FROM Hasoffers where ($stat_ip BETWEEN INET_ATON(network_start_ip) AND INET_ATON(network_end_ip)');





        }
        ?>php

最佳答案

你可以在

之间使用
SELECT inet_aton(network_start_ip),inet_aton(network_end_ip) 
FROM blacklisted
WHERE your_ip_column  BETWEEN INET_ATON(network_start_ip) AND INET_ATON(network_end_ip)

如果您需要在单个选择中同时进行查询,您可以在两者之间使用左连接

SELECT a.stat_ip 
FROM Hasoffers as a 
LEFT JOIN blacklisted on  as b on inet_aton(a.stat_ip)  
              between INET_ATON(b.network_start_ip) AND INET_ATON(b.network_end_ip)

关于php - 我如何检查包含 ip 地址(inet_aton)的 php 变量($stat_ip)是否位于两个 ip(inet_aton 格式)的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361437/

相关文章:

php - 在php中获取父类的所有定义类

php - 如何将我的 sql 结果作为变量发送到 codeigniter 中的 Controller

php - 如何以编程方式为每个购物车项目设置动态折扣?

python - 带池的 SQLAlchemy 不关闭数据库连接

mysql - 创建具有约 6 列复合键的表有何含义?

PHP 嵌套 FOR 循环故障排除

php - mysql - php 倒计时器 - 服务器端

php - 如何调用 GET 参数中指定的函数?

php - PHP/MySQL 中的多查询替换

UTF-8 数据库的 MySQLDump 备份有字符损坏,但默认字符集是正确的