mysql中IP地址的正确字段类型是什么?什么是使用PHP存储它的正确方法?
答案 0 :(得分:61)
This tutorial可能会对您有所帮助。
保存IPv4地址的最有效方法是使用INT字段(不是您所期望的VARCHAR)。您可以使用PHP的ip2long
转换它们,然后使用MySQL的INET_NTOA
函数或PHP的long2ip
函数进行转换。
如果您需要存储IPv6,则需要使用BINARY字段和PHP的inet_pton
函数。
答案 1 :(得分:50)
您可以将它们存储在长度为128位(16字节,BINARY(16)
或VARBINARY(16)
)的二进制字段中。
要将任何IP地址转换为其二进制表示,您可以使用php函数inet_pton
。此方法适用于IPv4和IPv6地址。 inet_ntop
可用于获取存储的ip地址的字符串表示形式(无论版本如何)
答案 2 :(得分:17)
通常,您可以使用VARCHAR(45),因为它足够长,甚至可以存储IPv6。