标签: ip2long

如何在 MySQL 中使用 INET_ATON 对 IP 地址进行通配符搜索?

我发现这种使用 INET_ATON 将 IP 地址作为整数存储在 MySQL 数据库中的方法:https ://stackoverflow.com/a/5133610/4491952

由于 IPv4 地址的长度为 4 个字节,因此您可以使用正好为 4 个字节的INT( UNSIGNED)

`ipv4` INT UNSIGNED
Run Code Online (Sandbox Code Playgroud)

INET_ATONINET_NTOA它们转换:

INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;
Run Code Online (Sandbox Code Playgroud)

对于 IPv6 地址,您可以改用 a BINARY

`ipv6` BINARY(16)
Run Code Online (Sandbox Code Playgroud)

并使用PHP 的inet_ptonandinet_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']);
Run Code Online (Sandbox Code Playgroud)

但是如何使用 INET_ATON 和 PHP 的 ip2long 函数进行通配符搜索,例如 192.168.%?

php mysql inet-aton ip2long

2
推荐指数
1
解决办法
1524
查看次数

标签 统计

inet-aton ×1

ip2long ×1

mysql ×1

php ×1