使用 PHP 将 IP 地址存储在 MySQL 数据库中
mysql 中 IP 地址的正确字段类型是什么?使用 PHP 存储它的正确方法是什么?
what is the right field type for IP address in mysql? and what is the right way of storing it using PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
本教程可能会对您有所帮助。
保存 IPv4 地址的最有效方法是使用 INT 字段(而不是您可能期望的 VARCHAR)。您可以使用 PHP 的
ip2long
转换它们,然后使用 MySQL 的INET_NTOA
函数或PHP 的long2ip
函数。如果您需要存储 IPv6,则需要使用 BINARY 字段和 PHP 的
inet_pton
函数。This tutorial might help you.
The most efficient way of saving IPv4 addresses is with an INT field (not VARCHAR as you might expect). You convert them using PHP's
ip2long
and back using either MySQL'sINET_NTOA
function or PHP'slong2ip
function.If you need to store IPv6, you'll want to use a BINARY field instead and PHP's
inet_pton
function.您可以将它们存储在长度为 128 位(16 个字节,
BINARY(16)
或VARBINARY(16)
)的二进制字段中。要将任何 IP 地址转换为其二进制表示形式,您可以使用 php 函数
inet_pton
。此方法适用于 IPv4 和 IPv6 地址。inet_ntop
可用于获取存储的 ip 地址的字符串表示形式(无论版本)you can store them in a binary field with a length of 128 bits (16 bytes,
BINARY(16)
orVARBINARY(16)
).to convert any ip address to its binary representation, you can use the php function
inet_pton
. this method will work for both IPv4 and IPv6 addresses.inet_ntop
can be used to get back the string representation of the stored ip address (regardless of version)一般来说,您可以使用 VARCHAR(45),因为它足够长,甚至可以存储 IPv6。
Generally you can go with VARCHAR(45) as it will be long enough to even store IPv6.