2

この問題に関係するいくつかのスレッドを調べましたが、コードの何が問題なのかまだわかりません。

この形式「mm-dd-yyyy」のフォームから日付フィールドを持ってきます。生年月日フィールドを「yyyy-dd-mm」として更新するためにコードに持ってくると、次を使用します

$birth=$_POST['dateBorn'];
$dateB = date('Y-d-m',strtotime($birth));
$finaldateB = ($dateB === false) ? '0000-00-00' : date('Y-d-m',strtotime($dateB));

変数の値を (2012 年 11 月 23 日の生年月日を使用して) エコーすると、次の値が表示されます。 12

私は明らかに何か間違ったことをしており、どこを見つけることができませんでした

ティア

物事を機能させるために、少なくともエレガントではないかもしれない回避策を発見しましたが、今のところ必要な結果が得られます

 $dateB = $birth;
 $dateborn_a=explode("-",$birth);
 $yearborn = $dateborn_a[2];
 $dayborn = $dateborn_a[1];
 $monthborn = $dateborn_a[0];
 $dateOfBirth=$yearborn."-".$monthborn."-".$dayborn;

次に、$dateOfBirth の値を使用してテーブルを更新します。これまでにテストしたすべてのレコードで機能しました。

4

2 に答える 2

5
$dateB = date('Y-d-m',strtotime($birth));

ここ

y is for year 
d is for day
m is for month

だからフォーマットは yyyy-dd-mm

試す

$dateB = date('Y-m-d',strtotime($birth));
于 2012-11-30T16:08:45.540 に答える
2

Ymd の代わりに Ydm を使用しています。MySQL の日付形式は YEAR-MONTH-DAY である必要があります。使用する

$dateB = date('Y-m-d',strtotime($birth));

それを修正する必要があります。

于 2012-11-30T16:08:31.813 に答える