我在数据库中将IP地址存储为整数,使用 ip2long(),列类型为无符号整数。但是对于某些IP,它保存为0。我进行了测试,发现对于一些IP,ip2long函数返回负整数,当我将其插入到数据库中时,它会保存为0。我搜索了一下,每个人都说该列必须是无符号整数。
例如:
例如:
ip2long("212.36.25.15");
将返回 -735831793
,并且在数据库中将保存为 0
。
VARCHAR
列是更好的选择,因为它可以存储IPv4和IPv6地址。你的数字解决方案只支持IPv4,这会在以后导致问题。IPv4地址是一个无符号32位值,但除非你要存储数十亿个地址,否则最好使用字符串。这样更安全、更灵活。 - tadman