如何将32位系统上的ip2long负值存储到MySQL

时间:2015-10-09 10:00:22

标签: php mysql ip2long

我必须将IP地址存储到运行在32位系统上的MySQL表中。

在64位系统上,我只使用INT(10) UNSIGNED,因为ip2long始终是绝对值。

如何让它在32位上运行?我有两个选择。

  1. 删除UNSIGNED并存储负值,但我不确定是否 一旦价值太大或太小,仍有机会 这样做(因为上限将减少一半到 允许下限为负数)
  2. 使用sprintf("%u",ip2long( $ip )) checkout this post(可能会慢于1。)
  3. 还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试在PHP中转换IP,但在SQL插入查询中使用INET_ATON函数https://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton。您需要使用INT UNSIGNED作为列类型。