好了,现在我意识到类似的问题可能已经被问了一百万次了,但我在这方面是一个真正的新手,我真的很感谢你在这里的帮助。
基本上,我想将访问者的IP地址存储在一个MySQL中,以便以后检索和验证。我首先需要知道我需要使用什么类型的字段来存储IP地址。如果可能的话,我还想使系统与IPv6地址兼容。
提前感谢
发布于 2012-05-15 03:42:51
要存储IPv4,您可以使用INT UNSIGNED,而对于IPv6,您需要decimal(39,0),将ip存储在表中,您可以使用函数INET_ATON
INSERT INTO table (ipcol) VALUES (INET_ATON('192.168.0.10'));并使用函数INET_NTOA将其检索回来
SELECT INET_NTOA(ipcol) AS ip FROM table;这回答了MySQL IPv6支持之前存在的问题;用户应该知道,MySQL现在本机支持IPv6: https://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html
发布于 2012-05-15 03:40:08
我使用VARBINARY(16)作为数据类型,并使用MySQL函数INET_ATON()插入IP号(稍后我使用反向函数INET_NTOA()读取IP号。
发布于 2012-05-15 03:38:24
MySQL中没有足够大的整型来存储IPv6地址。最紧凑的存储方式是像BINARY(16)这样的东西。如果您只需要存储和检索地址,而不需要对它们执行逻辑操作(例如,查询哪些IP地址属于覆盖前缀的网络掩码操作),那么这就足够了。如果需要执行逻辑或位操作,则需要更花哨一些:需要将IPv6地址存储在两个单独的64位整数列中。
https://stackoverflow.com/questions/10589887
复制相似问题