MYSQL - SELECT IP v4/v6, inet_pton & bin2hex MYSQL - 选择IP v4/v6,inet_pton和bin2hex

7 浏览
0 Comments

MYSQL - SELECT IP v4/v6, inet_pton & bin2hex MYSQL - 选择IP v4/v6,inet_pton和bin2hex

我在选择正确的值时遇到了一些麻烦,这些值来自于我的mysql sql服务器。

IP地址可以是IPv6和IPv4。

表:User{

...

ip binary(16)

}

$ip = '192.168.10.115';
$ip = bin2hex(inet_pton($ip)); // 返回c0a80a73
$result = $this->db->select("SELECT * FROM User WHERE HEX(ip) = $ip");
// $result为空,因为在数据库中存储的是:
// HEX(ip) = C0A80A73000000000000000000000000

我该如何找到与 * 00000 * 匹配的可行方案?

如果输入是IPv6匹配,那么这样做是可以的,但IPv4不行。

0
0 Comments

问题原因:根据MySQL手册上的说明,如果需要检索的值必须与存储时指定的值完全相同且没有填充,那么使用VARBINARY或BLOB数据类型可能更好。

解决方法:可以考虑使用VARBINARY或BLOB数据类型来替代BINARY。

0