2016-08-19 7 views
0

私は、ユーザーは、MySQLにいくつかの奇妙な理由イムは、それが正しい挿入し得ていないため、サイト上で登録された日付を挿入しようとしている、イムはmysqliの時間&日付の挿入

$connect->query("INSERT INTO `users` (username, email, password, name, country, signup_date) VALUES ('". $username ."', '". $email ."', '". $password ."', '". $fname . " " . $lname ."', '". $country ."', '".time()."')"); 

I以下このクエリを使用してsignup_dateに金額を挿入しているのですが、明らかに混乱しています。

+1

「signup_date」列のデータタイプは何ですか? –

+0

'time()'関数の出力は何ですか?それを出力するために何を期待していますか? –

+0

データベース構造がわからないと、私たちはあなたを助けません。データベースコンソールで 'desc users'を使ってテーブル構造を見せてください。そこから、その列タイプのデータベース文書を使用して、時間の形式を判別することができます。次に、PHPの 'time()'と 'date(...)'メソッドを使用して、必要に応じて文字列をフォーマットすることができます。一度それを持っていれば、質問を編集して、PHPのメソッドに使用して期待されるデータベース入力を得るべきかを尋ねることができます – EdgeCaseBerg

答えて

1

phpのtime()ファンクションreturns unixタイムスタンプ。しかし、MySQLは日付と時刻の値が'YYYY-MM-DD HH:MM:SS'形式で提供されることを期待しています。 PHPの中であなたの時間値をフォーマットして、MySQLが予期する形式にマッチさせてください。

+0

これはうまくいきます、申し訳ありませんが、ほとんど常識でしたが、私はちょうど混乱していました。 –

0

あなたが代わりに時間のMySQL関数NOW() OR CURDATE()

"INSERT INTO `users` (username, email, password, name, country, signup_date) VALUES ('". $username ."', '". $email ."', '". $password ."', '". $fname . " " . $lname ."', '". $country ."', NOW())" 
+0

これは、php(timezones)からのデータとは異なる結果をもたらす可能性があります。データベースレベルのタイムスタンプフィールドではさらに効率的です。 – Shadow

0

場合はsignup_dateの種類は、あなたがdate("Y-m-d H:i:s"を使用することができます日時である)を使用することができます()フォーマットされた日時

0

変更に列のデータ型を取得し、それを作るためにtimestamp

デフォルトの列にはCURRENT_TIMESTAMPと書かれており、signup_dateの列には何も挿入しないでください。現在の日付が自動的に挿入されます。

0

signup_dateのデータ型をデータベースからDateに設定し、クエリにNOW()関数を使用できます。

$connect->query("INSERT INTO `users` (username, email, password, name, country, signup_date) VALUES ('". $username ."', '". $email ."', '". $password ."', '". $fname . " " . $lname ."', '". $country ."', '".NOW()."')"); 

signup_dateデータ型のみDateだったとあなたはデータがこの形式になります上記のクエリを使用した場合:YYYY-MM-DD

それはTIMESTAMPデータ型にあった場合には、この形式になります:YYYY-MM-DD HH:MI:SS

は、必要なものによって使い分けることができます。

関連する問題