- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在向日志表中插入数据,包括 IP 地址。由于某种原因,IP 列有时为 NULL。在大多数情况下(所有记录的 99.9%)IP 被正确记录。
IP 使用 inet_aton() 函数存储在一个无符号 INT 列中。这会将 IP 地址从点分隔的书面形式 (zzz.xxx.yyy.www) 转换为数字形式。
MySQL 文档说明了以下有关 INET_ATON() 和 NULL 的内容:
INET_ATON() returns NULL if it does not understand its argument.
INET_ATON() may or may not return a non-NULL result for short-form IP addresses (such as '127.1' as a representation of '127.0.0.1').
我一直在记录流入查询的数据,并已验证绑定(bind)的参数确实包含 IP 地址而不是空值。它们的 IP 地址看起来不错,如果我手动运行一个
SELECT INET_ATON('zzz.yyy.xxx.www');
结果是一个数字表示,正如预期的那样。
为了完整起见,代码(注意:删除了看似不相关的列):
/* @var $conn PDO */
$stmt = $conn->prepare(
'INSERT INTO subscription_log(
email, groupid, subscribe_ip
) VALUES (
:email,
:groupid,
inet_aton(:label_subscribe_ip),
)');
$result = $stmt->execute($params);
// With the following input for $params (print_r):
Array
(
[email] => user@domain.com
[groupid] => 51299
[label_subscribe_ip] => 145.222.138.151
)
最后,尽管我怀疑它是否相关,MySQL 版本信息:
version = 5.5.27-28.1
version_comment = Percona Server (GPL), Release 28.1
version_compile_machine = x86_64
version_compile_os = Linux
对我来说,这很神秘。有人对如何进一步调试它有什么建议吗?
最佳答案
您可能在输入中添加了空格(或不可打印的字符)。
假设您在此处发布文字输出:
Array
(
[email] => user@domain.com
[groupid] => 51299
[label_subscribe_ip] => 145.222.138.151
)
145.
前有两个空格,这意味着实际输入是 _145.222.138.151
(开头有一个空格)。
尝试使用 trim()
在将 ip 添加到参数列表之前。
关于MySQL inet_aton() 偶尔返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682058/
//变量 $stat_ip 位于表 Hasoffers 中,要检查它是否位于列值 network_start_ip 和 network_end_ip 之间,后者位于另一个名为 Blacklisted
当我尝试使用 INET_ATON 函数将 IP 作为整数插入数据库时: insert into network (NwID,IP,Subnetz) values ('1','INET_ATON(1
在我的数据库中,我使用 INET_ATON 存储 IP (ipv4)
我有这个运行良好的代码: #include #include #include int main(int argc, char *argv[]) { struct in_addr add
我正在尝试根据给定的命令行参数初始化套接字,argv1 是 ip,argv2 是端口。端口可以根据需要工作,但创建 IP 地址是问题。预期输入为 ./client.out 10.5.10.20 8
我的脚本是: foreach (@missing) { my $ipdone = $_; $sth = $dbh->prepare("UPDATE tbl_ips SET search
在 Mysql 数据库中,我有一个表,我试图在其中存储 IPv4 地址。该表由两列组成:“_id”(主键)和一个整数列,我想在其中使用 INET_ATON 存储 ip 地址。我使用以下命令将记录插入到
我正在向日志表中插入数据,包括 IP 地址。由于某种原因,IP 列有时为 NULL。在大多数情况下(所有记录的 99.9%)IP 被正确记录。 IP 使用 inet_aton() 函数存储在一个无符号
我应该是瞎了,因为我在 ubuntu 和 debian 的发行版中找不到这些命令,也没有包含它们的包。 我应该自己用 C 编写代码和编译它们(或者用 perl 或其他任何语言编写或查找此代码)还是它(
我想将一串IP地址转换成对应的十六进制数。下面是这样做的程序,但我得到了倒数。例如,如果字符串为 128.2.194.242,则结果为 f2c20280。当我尝试使用 inet_ntoa 从十六进制字
我需要在插入前将 INET_ATON 添加到 ip 字段 INSERT INTO (`id`,`ip`) VALUES (NULL,'127.0.0.1'); 我需要数据库在插入之前透明地转换ip。并
我正在将一些为 linux 系统编写的代码转换为 windows 系统。我正在为我的 Windows 系统使用 C++,并且想知道函数 inet_aton 的等价物。 最佳答案 Windows 支持
是 inet_aton线程安全?我知道根据 UNP POSIX 不需要很多 Sockets API 是线程安全的,所以我必须假设它们不是,但一般来说我怎么知道某些东西在 Perl 中是否是线程安全的?
我正在尝试将 IP 地址存储到我的数据库中,并且我正在使用 INET_ATON,如下所示, $sql = " INSERT INTO pin ( page_id, user_id,
我有一个 MySQL 查询 SELECT * FROM table WHERE INET_ATON("10.0.0.1") BETWEEN INET_ATON(s_ip) AND INET_ATON(
我正在使用 inet_aton 将 IPv4 IP(216.12.207.142) 转换为字符串 3624718222。为此我使用了以下代码: ip_dec = unpack('>L', inet_a
我正在寻找一些函数来验证给定的字符串是否是有效的 ipv4 地址,但 inet_aton() 似乎对“11”和“1.1”这样的字符串很满意 验证 ipv4 字符串的最佳方法是什么。 #include
inet_aton 难道不应该规范化互联网地址的点版本吗?为什么我得到以下示例的不同输出值? int main(){ char USER_IP[16] = "192.168.002.025";
是否有必要在 MySQL 中使用unsigned 整数列来存储 IP(v4) 地址(已使用 INET_ATON 转换)? 我会自发地认为这真的无关紧要,因为无论该字段如何定义,相同的数据都将用于通过
有没有办法执行 mysql select 查询,例如: select INET_ATON(ip_address), id from table ... 由于列中的 IP 无效而导致 INET_ATON
我是一名优秀的程序员,十分优秀!