ホームページ >データベース >mysql チュートリアル >PHP および MySQL での「0000-00-00 00:00:00」日付挿入エラーを修正する方法

PHP および MySQL での「0000-00-00 00:00:00」日付挿入エラーを修正する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-31 17:44:18314ブラウズ

How to Fix

PHP MySQL 日付形式の挿入: 無効な日付の問題の解決

MySQL データベースに日付を挿入すると、データベースがエラーになる場合があります。コード内の日付形式が正しいにもかかわらず、「0000-00-00 00 00 00」のみを挿入します。この問題は、日付形式が MySQL によって認識されない場合に発生します。

この問題を解決するには、MySQL が受け入れる指定された日付形式に従うことが重要です。

  • String形式: 'YYYY-MM-DD' または 'YY-MM-DD' (オプションあり)区切り文字。
  • 数値形式: YYYYMMDD または YYMMDD (有効な日付を表す場合)。

指定されたコードでは、日付は ' の形式で受信されます。 08/25/2012」は、MySQL によって認識されません。したがって、日付形式をサポートされている形式のいずれかに変更する必要があります。

日付形式の問題を解決するためのオプション:

  1. 日付ピッカーの構成: altField と <code data-type="javascript">altFormat を使用して、次の形式を指定します。日付は PHP スクリプトに渡されます。たとえば、<code data-type="javascript">altFormat: "yyyy-mm-dd".
  2. STR_TO_DATE() 関数を使用します: STR_TO_DATE() を使用して日付文字列を MySQL のサポートされている形式に変換します。関数。例:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
  3. DateTime オブジェクトを使用する: 日付文字列を PHP DateTime オブジェクトに変換し、書式設定された文字列を取得して、挿入クエリで使用します。例:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    $date = $dt->format('Y-m-d');
    
    INSERT INTO user_date VALUES ('', '$name', '$date')
  4. 日付文字列の操作: 日付文字列を手動で操作して、有効な MySQL 形式に変換します。例:

    $parts = explode('/', $_POST['date']);
    $date = "$parts[2]-$parts[0]-$parts[1]";
    
    INSERT INTO user_date VALUES ('', '$name', '$date')

追加の考慮事項:

  • SQL インジェクションの回避: パラメーター化された準備済みステートメントを使用するセキュリティを防ぐためのクエリ
  • MySQL 5.5 を使用する 推奨事項: 非推奨の mysql_* 関数の代わりに、mysqli 拡張機能または PDO_MySQL を使用します。
  • DATE タイプを考慮する: を使用します必要な場合のみ、DATETIME または TIMESTAMP の代わりに MySQL DATE タイプを使用します。時刻情報なしで日付を保存します。

以上がPHP および MySQL での「0000-00-00 00:00:00」日付挿入エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。