gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:58:55 32 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/1120371/

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