我必须将IP地址存储到运行在32位系统上的MySQL表中。
在64位系统上,我只使用INT(10) UNSIGNED
,因为ip2long
始终是绝对值。
如何让它在32位上运行?我有两个选择。
UNSIGNED
并存储负值,但我不确定是否
一旦价值太大或太小,仍有机会
这样做(因为上限将减少一半到
允许下限为负数)sprintf("%u",ip2long( $ip ))
checkout this post(可能会慢于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作为列类型。