0

PHP から MySQL への Web ページを作成していますが、今まで気づきませんでした。PHPスクリプトに投稿されたフォームフィールドからの私の日付は、ストレージのためにMySQLテーブルに送信されます。フォーム内の日付フィールドが正しく表示され、POST 日付の値が正確であることが確認されても、MySQL テーブルに正しく入力されません。奇妙な理由で、年は 2012 年ではなく 2006 年です。しかし、時刻は正しいです。

ここに私のフォームの日付フィールドがあります:

<input type=text id="date" name="srdate" value=<?php echo date("m/d/y"); ?>

私のMySQLテーブルの日付列はTYPE DATEです。

テーブルに保存されている日付を確認しましたが、日付が 2012 年ではなく 2006 年と間違っています。

何か案が、

4

3 に答える 3

4

MySQL で受け入れられる唯一の日付入力形式はYYYY-MM-DD HH:MM:SS. 06/12/12PHP で生成している日付は、MySQL が解析しようとする(今日の) ように見えますが12th December, 2006、実際の 2012 年 6 月 12 日ではなく、 と表示されます。

同様に、コードがSQL インジェクション攻撃に対して大きく開いていることに注意してください。このコードでさらに先に進む前に、それらを防ぐ方法を読んで学んでください。そうしないと、サーバーは pwn3d を取得します。

于 2012-06-12T14:26:31.677 に答える
1

マニュアルから:

MySQL はいくつかの形式で値を解釈しようとしますが、日付の部分は、月-日-年または日-月-ではなく、常に年-月-日の順序 (たとえば、'98-09-04') で指定する必要があります。他の場所で一般的に使用される年順 (たとえば、'09-04-98'、'04-09-98')。

于 2012-06-12T14:28:27.180 に答える
1

yyyy-mm-dd構文を使用する必要があります。

挿入しようとするとMySQLがエラーをスローすることを期待していますが、06/12/12どうやらそれを次のように解析します2006-12-12

mysql> SELECT cast('06/12/12' as date);
+--------------------------+
| cast('06/12/12' as date) |
+--------------------------+
| 2006-12-12               |
+--------------------------+
1 row in set (0.00 sec)

mysql> SELECT cast('2012-06-12' as date);
+----------------------------+
| cast('2012-06-12' as date) |
+----------------------------+
| 2012-06-12                 |
+----------------------------+
1 row in set (0.00 sec)
于 2012-06-12T14:26:17.917 に答える