ホームページ >データベース >mysql チュートリアル >jQuery Datepicker 使用時の PHP と MySQL の日付形式の非互換性を解決するにはどうすればよいですか?

jQuery Datepicker 使用時の PHP と MySQL の日付形式の非互換性を解決するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-11 13:37:161027ブラウズ

How to Resolve PHP and MySQL Date Format Incompatibilities When Using jQuery Datepicker?

PHP MySQL の日付形式の問題

指定された形式 (例: "08/25/2012") で jQuery 日付ピッカーを使用する場合、選択した日付を日付値として MySQL データベースに挿入すると、エラーが発生し、デフォルト値が表示される場合があります。代わりに「0000-00-00 00:00:00」です。

理由:

MySQL のドキュメントによると、MySQL は 'YYYY などの特定の形式の日付値を認識します。 -MM-DD」または「YY-MM-DD」。 jQuery の日付ピッカーで使用される形式 ('08/25/2012') は、MySQL によって直接認識されません。

解決策:

これを解決するには、いくつかの方法があります。問題:

1. AltField を使用して形式を変換します:

「altField」および「altFormat」オプションを使用して、サポートされている形式で日付を提供するように日付ピッカーを構成します。これにより、目的の形式で日付を含む隠しフィールドが作成されます。

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

この関数は、受信した文字列を有効な MySQL 日付値に変換できます。次のように使用します:

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

3.日付を PHP DateTime オブジェクトに変換:

PHP の DateTime オブジェクトを使用して、受信した文字列を PHP が理解できる日付形式に変換します。

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

4.文字列を手動で操作:

上記のオプションがどれも機能しない場合は、受信した文字列を手動で操作して有効な MySQL 日付リテラルにすることができます。

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

注意:

  • 質問で提供されたコードは SQL インジェクションに対して脆弱です。この脆弱性を回避するには、パラメータを指定したプリペアド ステートメントの使用を検討してください。
  • mysql_* 拡張機能は、PHP 5.5.0 以降で非推奨になりました。代わりに mysqli または PDO_MySQL を使用してください。
  • 日付を保存するには、DATETIME または TIMESTAMP の代わりに DATE データ型を使用することを検討してください。

以上がjQuery Datepicker 使用時の PHP と MySQL の日付形式の非互換性を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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