我有点麻烦,从我的mysql sql server中选择正确的值。MYSQL - SELECT IP v4/v6,inet_pton&bin2hex
该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)'? – drew010 2012-02-10 23:01:19
如果您将该变量存储为十六进制数字,请将该列更改为数字...“HEX()”将用于数字输入。 – nickb 2012-02-10 23:04:47
@ drew010我用你的解决方案,工作完美。 – 2012-02-10 23:37:52