Datetime的NOW()函数不适用于PDO-MYSQL预处理语句?

时间:2012-12-31 00:37:35

标签: php mysql pdo prepared-statement

我有一个数据库表timetable,其DATETIME字段名为created_on

created_on DATETIME,
notes VARCHAR(255) NOT NULL

我使用NOW()函数通过PDO预处理语句插入当前时间。

INSERT INTO timetable(created_on, note)
VALUES(?, ?);

所以在绑定值并执行准备好的语句后......

$notes ="This is a note...";
$values =array("NOW()", $notes);
$stm->execute($values);

... MySQL表中的notes列写入了预期的数据,但created_on列产生了......

0000-00-00 00:00:00 

我不想使用Unix纪元时间戳。那么如何让DATETIME函数中的NOW()生效呢?

3 个答案:

答案 0 :(得分:8)

不要将NOW()作为参数传递,

INSERT INTO timetable(created_on, note) VALUES(NOW(), ?);

所以你只需要绑定笔记。

$values =array($notes);

答案 1 :(得分:2)

您将NOW()作为字符串传递,而不是mysql表达式。

用作:

INSERT INTO timetable(created_on, note)
VALUES(now(), ?);

答案 2 :(得分:1)

关键字NOW()是一个MySQL保留变量,需要进入SQL定义,不能绑定。所有SQL关键字(SELECT,FROM,WHERE,Columns名称等)都不能绑定,需要进入SQL声明。