我有一个名为 Blocks
的表,如下所示:
| startIpNum | endIPNum | locId |
| int(11) | int(11) | int(11) |
现在很简单。正如您所猜到的,这是一个 IP 范围列表。我正在使用它进行地理定位。现在我得到 $_SERVER['REMOTE_ADDR']
并将其转换为一个整数,并试图找到使用此查询时值落入的范围
"SELECT * FROM `Blocks` WHERE startIPNum >= '$ip_addr' AND endIPNum <= '$ip_addr' "
其中 $ip_addr
是 REMOTE_ADDR
的整数形式。现在的问题是查询在 phpMyAdmin 中的 PHP 和 MySQL 中都返回一个空结果,即使我知道表中有一行 IP 号介于两者之间,因为我的 IP 号是表格中的一行是
| startIpNum | endIPNum | locId |
1677351936 | 1677354111 | 12431
所以我的结论是我的查询格式不正确。那么如何正确查询表以获得我想要的结果呢?
最佳答案
您提供的条件不正确,
SELECT * FROM `Blocks`
WHERE startIPNum <= $ip_addr
AND endIPNum >= $ip_addr
关于php - 执行此命令的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037049/