我将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}'无法工作。我执行了一些测试,这些测试肯定是有效的,但比较总是失败。我做错了什么?
发布于 2014-03-22 10:42:06
当存储为32位整数时,IPv4地址需要存储为无符号整数。MySql可能已经悄悄地将一个过大的有符号整数转换为它的二进制补码负数。
您可能希望检查您的表,并仔细检查您的查询。
https://stackoverflow.com/questions/22572405
复制相似问题