gpt4 book ai didi

php - 奇怪的 MYSQL/PHP 错误 : inserts with now()+$i as timestamp occasionally inserts 0

转载 作者:可可西里 更新时间:2023-11-01 07:37:48 27 4
gpt4 key购买 nike

我观察到这个奇怪的问题。用 now() 插入没问题,但是当向 now() 添加数字时,它有时会插入 0。这看起来是随机的。

这是查询

mysql_query("INSERT INTO action_data (user_id, value, create_time, site_id) VALUES (807809, 20, now()+$i, 409666)");

表:ENGINE=InnoDB AUTO_INCREMENT=164865 DEFAULT CHARSET=latin1

mysql_版本

+-------------------------+------------------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------------------+
| innodb_version | 1.0.13-11.6 |
| protocol_version | 10 |
| version | 5.1.52-rel11.6-log |
| version_comment | Percona Server (GPL), 11.6, Revision 140 |
| version_compile_machine | x86_64 |
| version_compile_os | unknown-linux-gnu |
+-------------------------+------------------------------------------+

我在一个循环中运行了 100 次,其中大约前 1/3ish 是在时间 0 时插入的,其余的都很好。有人知道为什么会这样吗?

最佳答案

这里猜测...但它似乎在数字上下文中(比如,如果您将数字添加到返回值),NOW() 返回一个看起来像时间戳的数字(不是秒数!)。比如,今天它可能会返回 20120409161530.000000。现在...根据 $i 的值,这似乎很容易导致无效值。我的意思是,如果它是 666666 怎么办?您最终会得到 20120409828196.000000,这作为时间戳毫无意义……而且我很确定 MySQL 只会将无效值变为 0。

您可能需要考虑像 NOW() + INTERVAL $i SECOND 这样的东西,并重新定义 $i 为秒数(或分钟、天,甚至years if you like...只需将 SECOND 更改为您决定的任何内容)。您得到的时间不太可能一团糟。

关于php - 奇怪的 MYSQL/PHP 错误 : inserts with now()+$i as timestamp occasionally inserts 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com