php - MYSQL - 选择 IP v4/v6、inet_pton 和 bin2hex

标签 php mysql select hex ip

我在从 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/

相关文章:

php - 使用下拉菜单更新数据库而不使用提交按钮

mysql - CakePHP 3 : Multiple Order results in pagination?

java - 如何让DB为后续事务返回不同的行?

database - SQL Server - 使用带交集的计数函数

php - 此用户身份验证是否足够安全?

php - 保护 php 包括(使用 htaccess?)

php - SQL为用户发送过邮件的每个联系人选择最后一条消息

mysql - 如何在又高又窄的MySQL表中存储答案

MySQL - 从重复项中选择

mysql - 提高 MySQL 选择查询的执行速度