クライアントの注文の日付を保持するMysqlデータベースがあります。
日付はphp関数によって生成されますdate('Y-m-d')
。私のデータベースの2つのレコードには値があります'0000-00-00'
。1つはオーストラリアのクライアントによって作成され、もう1つはイタリアのクライアントによって作成されました。他の5000件の注文は問題ありません。
私の質問は、どのようにしてそのような日付を生成することができるのかということです。それは個々のブラウザ設定を持つものでしょうか?
手伝ってくれてありがとう
5 に答える
私が見つけることができる唯一の理由は、クライアントが不適切な日付形式を入力したか、空の文字列を入力したことです。Mysqlの日付形式はyyyy-mm-ddであることを忘れないでください。
同じ問題が発生していることに気付きました。$date変数を挿入するときに一重引用符を付けなかったため、0000-00-として表示されるnullまたは空白の値が挿入されていたことがわかりました。データベースの00。挿入ステートメントに$dateの代わりに'$date'を入れると、値は期待どおりに表示されました。
これは、MySQLに値がまったくないなどの無効な値が渡されたことを意味します。コードをチェックして、その日付に対して常に有効な値があることを確認してください。
この投稿のデフォルトの日付「0000-00-0000:00:00」またはnullを確認してください。それはあなたの質問に答えます。おそらく、クライアント側のコードの年、月、日の変数が初期化されていません。
編集
そうでない場合はrecently changed the Date-related column
、データベースにからVARCHAR or TEXT
までがあるようですDATE
。
MySql changes
この場合のすべてのNULL
値は'0000-00-00'
。したがって、しばらく前に、日付がUIの必須フィールドではなく、NULLとして渡された場合は、上記のことが発生しています。
純粋にプログラムされた機能または古い機能を使用している場合がありますmysql
。例:CURDATE() + 5
日付をDBに正しく挿入しますが、ユーザーがDBに挿入すると、2016-12-28
が表示され0000-00-00
ます。現在の日付が2016-12-20であれば、正常に動作します。絶対に正しい関数はですCURDATE() + INTERVAL 5 DAY
。あなたは1月の初めに書いているので、多分あなたは同様の問題を抱えています。