2012-12-31 5 views
5

データベーステーブルtimetableDATETIMEフィールドがcreated_onとなっています。私はPDO準備された文を通じて、現在の時刻を挿入するNOW()機能を使用しDatetimeのNOW()関数はPDO-MYSQLプリペアドステートメントでは機能しませんか?

created_on DATETIME, 
notes VARCHAR(255) NOT NULL 

。値を結合して準備されたステートメントを実行した後でそう

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エポックタイムスタンプを使いたくありません。だからNOW()機能のDATETIMEを機能させるにはどうすればよいですか?

答えて

8

はそうあなただけのノートをバインドする必要がありますが、パラメータとして

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

NOW()を渡しません。

$values =array($notes); 
2

NOW()をmysql式ではなく文字列として渡しています。このよう

使用:

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

しかし、時にはこれは条件付きになる可能性があります。そのため、値は現在とは異なる値になります。 – Miguel

1

キーワードNOW()はMySQLの予約変数であり、SQL定義に入る必要があり、バインドできません。すべてのSQLキーワード(SELECT、FROM、WHERE、列名など)はバインドできず、SQL宣言に入る必要があります。

関連する問題