2

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() のように準備しないのはなぜですか?

4

2 に答える 2

1

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

NOW()sqlite には関数がありません。'now'文字列を使用してみてくださいdatetime()。SQLite 2009 Pro には、この関数の独自の実装が必要です。これを独自に php に実装することができます: http://php.net/manual/en/pdo.sqlitecreatefunction.php

于 2012-05-13T12:14:14.167 に答える
1

問題は NOW() 関数が SQLite に存在しないことです。代わりにdatetime('NOW','localtime') を使用してください。これは、 SQLite の NOW 関数の代替例です。

于 2012-08-15T16:37:58.100 に答える