要在我的Sql中存储IPv4地址,我使用的是INT字段类型。
由于长度是强制性的,那么正确的字段长度是多少?
另外,我使用PHP ip2long来存储访问者的IP地址;为了防止将来出现任何错误,我应该考虑使用IPv6吗?
答案 0 :(得分:2)
如何存储IPv4已经在StackOverflow(Storing IP address in MySQL database (IPv4 AND IPv6))上得到了解答,所以我只会回答你的其余问题。
答案 1 :(得分:2)
这取决于。
如果考虑IPv6兼容性,可以使用PHP inet_pton和inet_ntop来打包这些值。要在MySQL中存储值,您应该使用VARBINARY(16)。
MySQL 5.6.3或更新的纯MySQL解决方案可以使用INET6_ATON和INET6_NTOA来转换值。这两个功能都适用于IPv4和IPv6。
答案 2 :(得分:1)
VARCHAR(15)。你可能不需要ip2long。这取决于你从数据库中取出它时如何使用它,但是从数据库中检索它之后,你可能比以前更好地转换它。 (ip2long用于计算ip范围或在ip地址上使用条件)