php - 使用 INET_ATON 存储 IP - 有符号或无符号整数?

标签 php mysql ip unsigned signed

是否有必要在 MySQL 中使用unsigned 整数列来存储 IP(v4) 地址(已使用 INET_ATON 转换)?

我会自发地认为这真的无关紧要,因为无论该字段如何定义,相同的数据都将用于通过 INET_NTOA 将其转换回来。 所以唯一的区别是,在一种情况下,您在数据库中看到一个负数,而使用无符号时,您会看到一个(完全)不同的正数,而两种情况下的实际数据相同,只是表示形式因字段定义而异, 对吗?

最佳答案

来自docs on INET_ATON() :

To store values generated by INET_ATON(), use an INT UNSIGNED column rather than INT, which is signed. If you use a signed column, values corresponding to IP addresses for which the first octet is greater than 127 cannot be stored correctly. See Section 11.2.6, “Out-of-Range and Overflow Handling.

为什么不直接使用 unsigned 来保证兼容性呢?在您的场景中使用 unsigned 有什么缺点会让您对此产生疑问?

关于php - 使用 INET_ATON 存储 IP - 有符号或无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995360/

相关文章:

java - Glassfish4 和 MySQL 5.5.38 远程服务器 : com. mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

header - 为 Arduino 以太网上传出的 UDP 数据报设置 IP 数据包的生存时间 (TTL)

ip - 如何防止 TOR Vidalia 更改我的 IP?

javascript - 使用 jquery 从运行 mysql 的 php 脚本返回信息

php - 简单的 XML 加载文件并从 XML 结果中提取信息

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 从 .htaccess 访问 MYSQL

php - 使用 Google Analytics 统计图像中的用户访问次数

php - 运行 PHP 示例项目时出现词法错误

php - 关于使用 PHP 和 MySQL 编写搜索功能的建议