使用 PHP 将 IP 地址存储在 MySQL 数据库中

发布于 2024-11-16 06:38:50 字数 50 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

做个少女永远怀春 2024-11-23 06:38:50

本教程可能会对您有所帮助。

保存 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's INET_NTOA function or PHP's long2ip function.

If you need to store IPv6, you'll want to use a BINARY field instead and PHP's inet_pton function.

人生戏 2024-11-23 06:38:50

您可以将它们存储在长度为 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) or VARBINARY(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)

泪之魂 2024-11-23 06:38:50

一般来说,您可以使用 VARCHAR(45),因为它足够长,甚至可以存储 IPv6。

Generally you can go with VARCHAR(45) as it will be long enough to even store IPv6.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文