我在从 mysql sql 服务器中选择正确的值时遇到了一些麻烦。
ip 可以是 ipv6 和 v4。
表:用户{
...
ip 二进制(16)
}
$ip = '192.168.10.115';
$ip = bin2hex(inet_pton($ip)); // Returns c0a80a73
$result = $this->db->select("SELECT * FROM User WHERE HEX(ip) = $ip");
// $result empty because in db its stored as:
// HEX(ip) = C0A80A73000000000000000000000000
如何获得与 * 00000 * 的可行匹配?
如果输入是 ipv6 匹配,则可以,但 ip v4 则不行。
最佳答案
您可以使用 VARBINARY
而不仅仅是 BINARY
吗?
摘自 Binary/Varbinary 上的 MySQL 手册:
If the value retrieved must be the same as the value specified for storage with no padding, it might be preferable to use VARBINARY or one of the BLOB data types instead.
关于php - MYSQL - 选择 IP v4/v6、inet_pton 和 bin2hex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235986/