0

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

在 64 位系统上,我会简单地使用INT(10) UNSIGNED,因为ip2long它始终是一个绝对值。

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

  1. 删除UNSIGNED并存储负值,但我不确定一旦完成此操作是否仍有可能值太大或太小(因为上限将减少一半以允许下限为负)
  2. 使用sprintf("%u",ip2long( $ip )) 结帐这篇文章(可能会比 1 慢。)

还有其他解决方案吗?

4

1 回答 1

1

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

于 2015-10-09T12:11:02.607 回答