首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Insert Into datetime = NOW()是否不起作用?

问MySQL Insert Into datetime = NOW()是否不起作用?
EN

Stack Overflow用户
提问于 2010-12-29 03:01:49
回答 4查看 33.4K关注 0票数 5

我有以下代码(php,mysql,pdo):

代码语言:javascript
复制
$stmt = $db->prepare("INSERT INTO agent_temp SET party=?, date = NOW()");
$stmt->execute(array($party));

运行时,交易方被正确插入,但日期没有按其应有的方式插入(操作时的系统日期和时间)。我已经多次验证date的字段类型是datetime。

有什么想法吗?

编辑

提供实际数据和返回的结果:

假设如下所示:

$party = 'John';

结果返回:

代码语言:javascript
复制
party      |      date    
-------------------------------------
John       |    0000-00-00 00:00:00

更新:

当我直接在mysql查询浏览器中运行以下代码时,insert会正常工作:

插入agent_temp set party =‘约翰’,date = NOW();

正在返回:

代码语言:javascript
复制
party      |      date    
-------------------------------------
John       |    2010-12-28 13:15:23

已应答

好了,谁准备好杀我了?我不知道是什么引起了这个问题,但不幸的是,这个问题似乎是由于我机器上的一个较早版本的php脚本被缓存了,并且仍然在运行错误的数据。我刷新、关闭并清空了浏览器,现在脚本可以工作了。我很抱歉让每个人的大脑都融化了一点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-29 03:09:19

这样如何:

代码语言:javascript
复制
$stmt = $db->prepare("INSERT INTO agent_temp SET party=?, date = ?");
$stmt->execute(array($_POST['party'], date("Y-m-d H:i:s")));
票数 9
EN

Stack Overflow用户

发布于 2010-12-29 03:25:12

我不确定您使用的是哪个系统,但我认为您的prepare语句将在NOW()部分周围添加引号-导致语句尝试插入NOW(),而不是运行mysql函数NOW() -因此,由于字段现在无法存储字符(),您将得到000-00.....

出于兴趣,尝试将字段类型从DATETIME更改为TEXT,看看在运行该命令时会得到什么。

票数 2
EN

Stack Overflow用户

发布于 2010-12-29 03:05:56

这是一个纯INSERT语句,它不更新任何行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4548637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档