【发布时间】:2012-03-03 09:45:36
【问题描述】:
我在从我的 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 不匹配。
【问题讨论】:
-
试试改成
ip VARBINARY(16)? -
如果您将变量存储为十六进制数字,请将列更改为数字...
HEX()将适用于数字输入。 -
@drew010 我使用了你的解决方案,效果很好。