放一个UID,STARTIP,ENDIP,COUNTRY,LOCAL的记录上来看看是怎么排的,各个字段的代表的是什么?
解决方案 »
- php执行vbs脚本
- php里对mysql一张表中的某个字段做排名输出名次
- 我的mysql 5.5重装老是出问题网站上的方法我都试过了就是不行,求高手指点高手
- 问题
- curl、fopen、file_get_contents 哪个效率最高
- 100分!在线等,简单问题,php5为什么不显示错误信息却显示空白?解决后10分钟左右结帐!
- 电脑上装了ASP.NET,APACHE就装不上了,怎么才能装上呀?
- 在线请教!!!!!!!!!!!!!!!
- 有一个字符串,是由数字组成,现在要实现的是:从左至右每两位相加,结果组成一个新的字符串,如何实现,我是个新手!
- Jquery 获取input值失败!
- php里怎么在sql server中创建表啊?
- 急````帮帮忙````联动菜单的增删改查不知道怎么实现
2个UID 没关系..rj_IP 是存放IP 的UID
rj_ipdata 是存放来访者的UID rj_ipdata 开始是空数据表 有一个来访者访问就把IP地址存放进数据表,然后查询的时候从这个数据表里取IP地址然后在对比RJ_IP 数据表取 相对应的国家和地区然后在显示出来...是这样的
第二部:将ip转成库中相同的格式,比如:如果库中是xxx.xxx.xxx.xxx
如客户的数是120.2.3.7之类的,要补齐
第三步:从$ip中截取和库中查询相对应的IP段
第四步:根据相关IP段查询库中对应的城市和地区
有5个字段.UID,STARTIP,ENDIP,COUNTRY,LOCAL 一个表是rj_ipdata 放的是来访者的IP
有3个字段 UID,IP,DATA 我现在想通过 rj_ipdata 里的IP 字段 然后查询 RJ_IP表 里的 IP字段 和想对应的城市,和地址 SELECT * FROM rj_ipdata AS rj_d INNER JOIN rj_ip WHERE rj_d.IP>rj_ip.STARTIP AND rj_d.IP<rj_ip.ENDIP
这段时间没有怎么写SQL,都是在做.NET,用的nhibernate,如果上面的不正确,你可以把inner 改成 outner(不知道是不是这么写,如果不正确,找一下手册吧) 思路就是这样了,也没有什么难的.
function flyip(str)
if isnull(str) or str="" then
flyip="xxx"
else
flyip=str
str1=left(flyip,instr(flyip,".")-1)
flyip=mid(flyip,instr(flyip,".")+1)
str2=left(flyip,instr(flyip,".")-1)
flyip=mid(flyip,instr(flyip,".")+1)
str3=left(flyip,instr(flyip,".")-1)
str4=mid(flyip,instr(flyip,".")+1)
flyip=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
end if
end function
这个函数是先把ip库里的ip按规律转换成数字,方便查询,就是先读下 修改 在保存数字
示例:<%=flyip(rs("beginIP"))%>
function ipfly(str)
if isnull(str) or str="" then
ipfly="xxx"
else
ipfly=flyip(str)
flysql="select * from [444] where beginip<="&ipfly&" and endip>="&ipfly
set flyrs=flyconn.execute(flysql)
if not flyrs.eof then
ipfly=flyrs("address")
else
ipfly=ipfly&"未知IP"&str
end if
flyrs.close
set flyrs=nothing
end if
end function
这个是查ip 的
示例:<%=ipfly(rs("Add_IP"))%>自己写的 ip数据库里有30W条记录 速度比较慢
lz可以去下个51la精简版的3W条左右你可以先用flyip把ip库里的没一个ip包括beginip endip都转下
之后用ipfly查询
asp的
lz改下...
这个好像只有ac的数据库可以
SQL的int支持不了转换后那么大的数