如何比较mysql数据库中的IP地址?

时间:2014-03-22 01:46:32

标签: php mysql ip-address

我将IP地址存储在mysql数据库中,我想执行查询,查看数据库中是否已存在特定的IP地址。我已经读过,建议将IP地址作为INT存储在mysql数据库中。所以这就是我正在做的事情:

$ip = '209.173.53.167'; // some random IP address
$ip_long = ip2long($ip); // convert IP address to integer

$sql = "SELECT * 
        FROM ip_addresses 
        WHERE ip='{$ip_long}'";

我在存储IP地址时执行类似的操作,确保它们存储为INT。但问题是我在WHERE子句中的比较似乎不起作用。出于某种原因,WHERE ip='{$ip_long}'不起作用。我已经完成了绝对有效的测试,但比较总是失败。我做错了什么?

1 个答案:

答案 0 :(得分:0)

IPv4地址作为32位整数存储时,需要存储为无符号整数。可能的MySql已经将一个太大的有符号整数静默转换为二进制补码负数。

您可能需要检查您的表格并仔细检查您的查询。