如何通过PHP对MySQL数据库上的查询进行格式化,以确定IP地址是否位于两个不同字段中的两个数字之间?
要查找的IP地址的数字表示形式:
1265631252数据库格式:
IP FROM IP TO REGISTRY ASSIGNED CTRY CNTRY COUNTRY
"1265631232","1265893375","arin","1152835200","US","USA","United States"
"1265893376","1265958911","arin","1149120000","US","USA","United States"
"1265958912","1266024447","arin","1149120000","US","USA","United States"
"1266024448","1266089983","arin","1162425600","US","USA","United States"发布于 2010-03-03 06:04:06
类似这样的查询:
SELECT * FROM your_table WHERE 1265631252 BETWEEN `IP FROM` AND `IP TO`;将返回提供的数字介于IP FROM和IP TO之间的行。
发布于 2010-03-03 06:25:56
如果您已经有了与IP地址等效的DWORD值,那么response from Jordan将完成此任务。
SELECT * FROM your_table WHERE 1265631252 BETWEEN `IP FROM` AND `IP TO`;如果需要,在执行查询之前,计算ip地址的DWORD等效值,您可以执行以下操作。
给定形式为part1.part2.part3.part4的ip地址a,则可以使用以下公式计算DWORD等价物:
dword(a) = ((a.part1 * 256 + a.part2) * 256 + a.part3) * 256 + a.part4然后,您可以在SQL查询中使用dword(a)结果。
从206.191.158.55这样的IP地址开始。
((206 * 256 + 191) * 256 + 158) * 256 + 55结果将是IP地址的双字等价物。在本例中为3468664375。
请参阅有关ip地址here的DWORD等价物的更多信息。
发布于 2010-03-03 06:05:18
下面这样的内容如何:
select *
from your_table
where ip_from <= '1265631252'
and ip_to >= '1265631252'例如,获取'1265631252‘在ip_from和ip_to之间的所有行?
https://stackoverflow.com/questions/2367152
复制相似问题