2012-03-22 5 views
0

私は単純なブログシステムを設計していますが、ブログの投稿が保存されているテーブルに現在の日付を入れようとしています管理者の承認を待っています。私が使用した方法は0000-00-00を日付列に入れます!次のように私は何を使用していますと、次のとおりです。PHP - MySQLテーブルに日付を入れよう

$query = "INSERT INTO blogentry VALUES ('".$mnam."','".date('d-m-Y h:m:s') ."\n"."','".$mcom."','".$approve."')"; 

私はPHP、このすべての時間のようなエラーaccrossつまずくことは比較的新しいです...しかし、私はこの1つをgoogleのように見えるカント!

ありがとうございました!

+2

私は今すぐsuggsetionを行い、now()を使用して代わりにエポックタイムスタンプを記録します。次に、date()を使用して人間が読める形式に戻します。 – gorelative

+0

PHPを学んでいる間は、自分自身を好きにしてPDOを調べてください。phpのデータベースとインターフェースする正しい方法です... mysql_query()を直接使用しないでください。 –

答えて

3

だから、これを行う最も簡単な方法は、ちょうどMySQLがNOW()機能とそれを処理できるようです:

INSERT INTO blogentry VALUES(..., NOW(), ...) 

別のオプションは、あなたのテーブルを変更することにより、TIMESTAMP Sを使用することです - 、DEFAULT CURRENT_TIMESTAMPTIMESTAMPを入力する欄を設定挿入するときにその列を無視することができます - 自動的に現在の時刻で塗りつぶされます。あなたは、

最後に
INSERT INTO blogentry(column1, column2) VALUES(column1value, column2value) 

あなたの入力をサニタイズする必要がを:あなたは、列をスキップするためにに挿入している列を指定する必要があります。好ましくは、準備されたステートメントとPDO(http://php.net/manual/en/pdo.prepared-statements.php)を使用するか、少なくともmysql_real_escape_stringを使用します。

+0

ああ、はるかに良い、ありがとう! – Phil

1

strtotime()の結果を保存してください。ユニークなタイムスタンプが作成されますが、これは将来必要になると解析されます。

-1

あなたは、日付関数にタイムスタンプを付与する必要があるかもしれません:

date('d-m-Y h:m:s', strtotime('now')) 
また

は、標準の日時書式行うには:上のMySQLのマニュアルから

date('Y-m-d H:i:s', strtotime('now')) 
2

DATE, DATETIME

DATEタイプは日付部分を持つ値に使用されますが、tiは含まれません私の一部。 MySQLは、DATEの値をのYYYY-MM-DD 'の形式で取得して表示します。 のサポート範囲は'1000-01-01'から'9999-12-31'です。

これは、YYYY-MM-DDの形式で日付を挿入する必要があることを意味します。 date('d-m-Y h:m:s')形式を使用しています。これをdate('Y-m-d')に変更し、正しく挿入する必要があります。

時刻を入力する場合は、列データ型をDATETIMEに変更して、date('Y-m-d H:i:s')の形式で挿入する必要があります。

他にも、INTの列型を使用して、UTCで格納されたUnixタイムスタンプを格納すると、移植性が向上します。タイムスタンプを簡単に操作して日付を出力することができます。