我有以下代码(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
答案 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
,并查看运行命令时获得的内容。