gpt4 book ai didi

php - 如何将 IPv6 从二进制转换为存储在 MySQL 中

转载 作者:行者123 更新时间:2023-11-29 20:52:41 25 4
gpt4 key购买 nike

我正在尝试以有效的方式在 MySQL 5.0 中存储 IPv6 地址。我已阅读与此相关的其他问题,such as this one 。该问题的作者最终选择了两个 BIGINT 字段。我的搜索还发现了另一种常用的机制:使用 DECIMAL(39,0) 来存储 IPv6 地址。我对此有两个问题。

  1. 与其他方法(例如 2*BIGINT)相比,使用 DECIMAL(39,0) 有何优点和缺点?
  2. 如何从 inet_pton() 返回的二进制格式进行转换(在 PHP 中)转换为 MySQL 可用的十进制字符串格式,如何转换回来以便可以使用 inet_ntop() 进行 pretty-print ?

最佳答案

我们选择了 VARBINARY(16) 列并使用 inet_pton()inet_ntop()进行转换:

https://github.com/skion/mysql-udf-ipv6

这些函数可以加载到正在运行的 MySQL 服务器中,并在 SQL 中为您提供 INET6_NTOPINET6_PTON,就像熟悉的 INET_NTOA 和IPv4 的 INET_ATON 函数。

编辑:MySQL现在有兼容的函数,只需different names 。仅当您使用的是 5.6 之前的 MySQL 并正在寻找方便的 future 升级路径时才使用上述内容。

关于php - 如何将 IPv6 从二进制转换为存储在 MySQL 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com