【难题】如何在数据库中查出IP段相同的记录? 本地IP:192.168.1.17查询数据库中与本地IP相似的记录并排序1、先查询出192.168.1.*2、其次是192.168.*.*3、....:192.*.*.*....... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把IP保存为10进制在数据库中,然后查询条件IP>=10进制(192.168.1.0) AND IP<=10进制(192.168.1.255) 建议查询的部分用sql,排序的部分用php先用select * from `table` where ip regexp "^192\.[0-9]+\.[0-9]+\.[0-9]+$"把符合条件的ip取出来我给你写个例子:$a = array( '192.168.5.23', '192.168.5.32', '192.101.1.3', '192.168.1.3', '192.235.61.3',);$p = '192.168.1.17';foreach ($a as $v){ $arr[$v] = abs(ip2long($v)-ip2long($p));}asort($arr);$res = array_flip($arr);print_r ($res); 思路是ip2long之后计算差值,用差值作为相似度依据 按照什么排序?用like不就行了吗? $pregIP = '192.168.1.17';$a = explode(".",$pregIP);$like = $a[0].".";echo $like;$sql = "select ip from `table` where ip like '".$like."%'";$result = mysql_query($sql);while($row = mysql_fetch_ASSOC($result)){ $IP_array[] = $row['ip'];}foreach ($IP_array as $v){ $arr[abs(ip2long($v)-ip2long($pregIP))] = $v;}ksort($arr);print_r ($arr); phpnow无法安装pear 麻烦大家帮我想一个思路,关于PHP删除多条记录等功能,多谢! Zend Studio 问题 求js验证用户名注册 Mysql 中 超大数据表 如何添加一个字段? 一个JS在IE和FireFox中执行效果 无法加载模块,这是为什么?? 各位高手帮帮忙:session如何存取对象。 在php页面里,是不是每页都要连接数据库,有没有只要一个连接,其他都能用的 PHP连接sql server 2008进行页面条件查询 PHP乱码问题 决定爬入此行,请先人们指教。。
先用
select * from `table` where ip regexp "^192\.[0-9]+\.[0-9]+\.[0-9]+$"
把符合条件的ip取出来
我给你写个例子:$a = array(
'192.168.5.23',
'192.168.5.32',
'192.101.1.3',
'192.168.1.3',
'192.235.61.3',
);$p = '192.168.1.17';foreach ($a as $v){
$arr[$v] = abs(ip2long($v)-ip2long($p));
}asort($arr);
$res = array_flip($arr);print_r ($res);
按照什么排序?
用like不就行了吗?
$a = explode(".",$pregIP);
$like = $a[0].".";
echo $like;
$sql = "select ip from `table` where ip like '".$like."%'";
$result = mysql_query($sql);
while($row = mysql_fetch_ASSOC($result))
{
$IP_array[] = $row['ip'];
}
foreach ($IP_array as $v){
$arr[abs(ip2long($v)-ip2long($pregIP))] = $v;
}
ksort($arr);
print_r ($arr);