PHP PDO不会用NOW()编写语句

时间:2012-05-13 11:55:02

标签: php sqlite

我有一些代码将记录插入到SQLite表中:

$statement = $db -> prepare("INSERT INTO posts (postedOn, content, tags) VALUES (DATE('now'), :content, :tags)");
$statement -> bindParam(':content', $content);
$statement -> bindParam(':tags', $tags);

问题是postedOn列只获取日期,而不是帖子的时间。我尝试使用NOW()代替:

$statement = $db -> prepare("INSERT INTO posts (postedOn, content, tags) VALUES (NOW(), :content, :tags)");

但我得到

Call to a member function bindParam() on a non-object

在第一次bindParam调用。如果我在SQLite 2009 Pro中运行它,这可以正常工作:

INSERT INTO posts (postedOn, content, tags) VALUES (NOW(), 'some content', 'tags')

为什么不准备像NOW()?

2 个答案:

答案 0 :(得分:1)

http://www.sqlite.org/lang_datefunc.html

sqlite中没有NOW()函数,请尝试在'now'中使用datetime()字符串。 SQLite 2009 Pro必须拥有它自己的这个函数的实现,你可以尝试在php中自己实现:http://php.net/manual/en/pdo.sqlitecreatefunction.php

答案 1 :(得分:1)

问题是SQLite中不存在NOW()函数。而是使用日期时间('现在','本地时间')。这是NOW function in SQLite

的替代示例