这个问题已经在这里有了答案 :
9年前关闭。
可能重复:
如何在mySQL中存储IP
我想从中获取IP地址$_SERVER['REMOTE_ADDR']
和其他一些$_SERVER
变量,哪种数据类型是正确的呢?
是VARCHAR(n)
吗
由于IPv4地址的长度为4个字节,因此可以使用正好为4个字节的INT
(UNSIGNED
):
`ipv4` INT UNSIGNED
而INET_ATON
与INET_NTOA
它们转换:
INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;
对于IPv6地址,您可以BINARY
改用:
`ipv6` BINARY(16)
并使用PHPinet_pton
和inet_ntop
进行转换:
'INSERT INTO `table` (`ipv6`) VALUES ("'.mysqli_real_escape_string(inet_pton('2001:4860:a005::68')).'")'
'SELECT `ipv6` FROM `table`'
$ipv6 = inet_pton($row['ipv6']);
问题内容: 我打算使用,但是我想知道如果我应该做INT并剥离句点怎么办。哪个会更好,为什么呢? 问题答案: 我想您只对IPv4地址感兴趣,而对IPv6不感兴趣。 我会在列中使用,然后使用和在文本表示形式和int值之间来回转换。
问题内容: 由于MySQL似乎没有任何“布尔”数据类型,因此您“滥用”哪种数据类型在MySQL中存储正确/错误信息? 尤其是在从PHP脚本进行读写的情况下。 随着时间的流逝,我已经使用并看到了几种方法: tinyint,包含值0/1的varchar字段, 包含字符串‘0’/‘1’或’true’/’false’的varchar字段 最后枚举包含两个选项“ true” /“ false”的字段。 以上
问题内容: 可以同时容纳IPv4和IPv6地址的一种数据类型。我想存储IP地址以限制一个人可以在我的网站上通过他/她的机器进行配置的数量。 问题答案: IPv4地址使用32位(4字节),IPv6地址使用128位(16字节)。因此,您可以将它们的二进制表示形式存储在或字段中。
问题内容: 我要输入电话号码,包括国家代码,分机号 如果tel_number大于15位,可以使用哪种数据类型,最好使用? 例如,如果我有加拿大的国家代码,则可以使用+2或002。哪个更适合处理? 谢谢你的建议。 问题答案: 好吧,我个人不使用数字数据类型来存储电话号码或相关信息。 您如何存储说001234567的数字?最终结果为1234567,丢失了前导零。 当然,您始终可以将其左移,但前提是您确
问题内容: MySql中使用哪种数据结构? 问题答案: 可能很多,但从B树开始。
问题内容: 我正在处理地图数据,并且扩展到了8个小数位。例如: 我在Google文档中看到了 使用: 但是,它们的小数位只能移到6。 我应该使用还是应该考虑使用另一种方法来存储此数据,以便精确。它将与地图计算一起使用。谢谢! 问题答案: DECIMAL是用于精确算术的MySQL数据类型。与FLOAT不同,它的精度对于任何大小的数字都是固定的,因此通过使用它而不是FLOAT,可以在进行某些计算时避免