MySQL插入到datetime = NOW()不起作用?

时间:2010-12-28 19:01:49

标签: php mysql pdo

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

$stmt = $db->prepare("INSERT INTO agent_temp SET party=?, date = NOW()");
$stmt->execute(array($party));

运行时,方正确插入,但日期未插入(系统日期和时间)。我已经多次验证日期的字段类型是datetime。

有什么想法吗?

修改

提供实际数据并返回结果:

假设如下:

$ party ='John';

结果返回:

party      |      date    
-------------------------------------
John       |    0000-00-00 00:00:00

更新

当我在mysql查询浏览器中直接运行以下代码时,插件的工作方式正常:

插入agent_temp set party ='John',date = NOW();

返回:

party      |      date    
-------------------------------------
John       |    2010-12-28 13:15:23

ANSWERED

嗯,谁准备杀了我?我不知道是什么引起了它,但遗憾的是这个问题似乎是由于我的机器的早期版本的PHP脚本被缓存并仍然运行不良数据。我刷新,关闭并清空了我的浏览器,现在脚本正常工作。我道歉让每个人的大脑都融化了一点。

4 个答案:

答案 0 :(得分:9)

怎么样:

$stmt = $db->prepare("INSERT INTO agent_temp SET party=?, date = ?");
$stmt->execute(array($_POST['party'], date("Y-m-d H:i:s")));

答案 1 :(得分:1)

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

答案 2 :(得分:1)

未经测试但问题可能是“日期”是一个保留字,您可以尝试重命名列,看看它是否有效。

另一种方法是添加一个带有'ON UPDATE CURRENT_TIMESTAMP'的时间戳字段。

答案 3 :(得分:1)

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

出于兴趣,请尝试将字段类型从DATETIME更改为TEXT,并查看运行命令时获得的内容。