2012-01-09 10 views
1

PHPからSQLに日付と時刻を保存したいと思います。ここで(クラス内のメソッドで見つかった)新しいレコードを挿入するSQL文は次のとおりです。PHPからSQLへ日付/時刻を保存

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
      value (:headline, :text, :date, :rating, :product_id, :username) 

そして、私の.PHPのページで、私は$_SERVER['REQUEST_TIME']を使用して、現在の日付と時刻を呼び出します。しかし、私はまだ "間違ったdatetime値"というエラーが出ています。日付を取得するために何が使えますか?

答えて

2

それは持っています正確なリクエスト時間ですか?

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
      value (:headline, :text, now(), :rating, :product_id, :username) 

MySQLは、エントリがテーブルに書き込まれるとすぐに現在の日付を挿入します。

6

あなたのタイムスタンプを生成することができる。

$timestamp = date('Y-m-d H:i:s'); 

これは、MySQLのタイムスタンプや日時フォーマットを模倣する必要があります。

MySQLはそのタイムスタンプが質問にPHPサーバと同期していると仮定すると、あなたもちょうどmysqlの現在のタイムスタンプ機能を使用することができます(NOW

)またはCURRENT_TIMESTAMPまたはCURRENT_TIMESTAMP()

+3

-1?ダウン回答者がこの回答の問題点を説明できますか? –

0

これは単なる推測ですが、$ _SERVER ['REQUEST_TIME']は有効な日時フォーマットではなく浮動小数点数を返します。

0

あなたは現在の時間を必要とする場合は、そのようにそれを行うことができます。

INSERT INTO tbl_reviews (headline, text, date, rating, product_id, username) 
INSERT INTO tbl_reviews ('$headline', '$text', CURDATE(), '$rating', '$product_id', '$username'); 
0
date_default_timezone_set('US/Eastern'); 
$cur_date=date("Y-m-d"); 
0

あなたは自動的にフォーマットされたタイムスタンプを取得するためにSQLの独自のCURRENT_TIMESTAMP値を使用することができます。

$ _SERVER ['REQUEST_TIME']はtime()またはmicrotime()の代わりに使用できます。

前述のように、REQUEST_TIME、time()、およびmicrotime()は、UNIX timestampを返します。これは基本的にUNIXエポックから経過した秒数で、DATETIMEフィールドと同じ形式ではありません。

+0

ここではあまり関係ない可能性がありますが、$ _SERVER ['REQUEST_TIME']はその瞬間(microtimeとtimeのdo)ではなく、要求の開始のタイムスタンプを返します。 – MichD