ホームページ >データベース >mysql チュートリアル >PHP から MySQL に日付を挿入するときに日付形式の競合を解決するにはどうすればよいですか?

PHP から MySQL に日付を挿入するときに日付形式の競合を解決するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-06 18:14:11277ブラウズ

How to Resolve Date Format Conflicts When Inserting Dates from PHP into MySQL?

PHP MySQL 挿入での日付形式の不一致

PHP を使用して MySQL データベースに日付を挿入しようとすると、次のようなエラーが発生する可能性があります。形式の不一致。一般的な jQuery 日付ピッカー形式「08/25/2012」は、MySQL でサポートされている日付形式と競合します。

この問題に対処するには、MySQL の日付リテラル要件を理解することが重要です。

  1. 文字列形式: YYYY-MM-DD またはYY-MM-DD、オプションの区切り文字あり。例: '2012-12-31'、'2012/12/31'、'2012^12^31'.
  2. 区切りのない文字列形式: YYYYMMDD または YYMMDD。例: '20070523'、'070523' ('2007-05-23' として解釈されます)。
  3. 数値形式: YYYYMMDD または YYMMDD。例: 19830905、830905 (「1983-09-05」として解釈されます)。

「08/25/2012」形式はこれらの規則に準拠していないため、変換する必要があります。いくつかのオプションが利用可能です:

1. jQuery Datepicker 形式の変換

サポートされている形式で日付を提供するように datepicker を構成します:

$( "selector" ).datepicker({
    altField : "#actualDate"
    altFormat: "yyyy-mm-dd"
});

または、dateFormat オプションを設定します:

$( "selector" ).datepicker({
    dateFormat: "yyyy-mm-dd"
});

2. MySQL の STR_TO_DATE() 関数を使用します

挿入中に文字列を変換します:

INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))

3. PHP の DateTime オブジェクトを使用した変換

適切な形式の文字列または UNIX タイムスタンプを取得します:

$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
$date = $dt->format('Y-m-d');
$timestamp = $dt->getTimestamp();

UNIX タイムスタンプ挿入の場合:

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))

4 。手動文字列操作

日付部分を抽出し、有効な形式で連結します:

$parts = explode('/', $_POST['date']);
$date  = "$parts[2]-$parts[0]-$parts[1]";

注意:

  • SQL インジェクションを防ぐには、プリペアド ステートメントを使用します。
  • DATE の使用を検討してください。日付のみの値の場合は、DATETIME または TIMESTAMP の代わりに入力します。

以上がPHP から MySQL に日付を挿入するときに日付形式の競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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