簡體   English   中英

PHP日期在MySQL Db中返回為0000-00-00 00:00

[英]PHP Date returning in MySQL Db as 0000-00-00 00:00

對此有一些答案,但根據應用程序,它們似乎都有不同的解決方案。

在我的PHP代碼中,我有一個for循環,用於創建要在HTML select中使用的變量:

 $today_select = new DateTime();
 $day1 = new DateTime();
 $day1_value = $day1->format('Y/m/d');

 for($i = 2; $i < 8; $i++) {
 ${'day' . $i} = $today_select->modify('+1 day');
 ${'day' . $i . '_select'} = ${'day' . $i}->format('l, jS F Y');
 ${'day' . $i . '_value'} = ${'day' . $i}->format('Y/m/d H:i:s');
 }

此循環聲明變量並將日期設置為值,以一周為單位遞增。

然后選擇日期:

 <select name="nd_date" id="nd_date">
 <option value="'.$day1_value.'" value='.($nd_delivery_date == '').' selected>Today      '.$day1_value.'</option>
 <option value="'.$day2_value.'" value='.($nd_delivery_date == '').' >Tomorrow'.$day2_value.'</option>
 <option value="'.$day3_value.'" value='.($nd_delivery_date == '').' >'.$day3_select.' '.$day3_value.'</option>
 <option value="'.$day4_value.'" value='.($nd_delivery_date == '').' >'.$day4_select.' '.$day4_value.'</option>
 <option value="'.$day5_value.'" value='.($nd_delivery_date == '').' >'.$day5_select.' '.$day5_value.'</option>
 <option value="'.$day6_value.'" value='.($nd_delivery_date == '').' >'.$day6_select.' '.$day6_value.'</option>
 <option value="'.$day7_value.'" value='.($nd_delivery_date == '').' >'.$day7_select.' '.$day7_value.'</option>
 </select>

這會將值分配給$ nd_delivery_date,然后將其寫入數據庫。 數據庫中的日期同時具有Date和Datetime兩種類型,兩者都不起作用。

我試過在for循環中轉換strtodate,我也試過在for循環中使用date而不是datetime,這很不愉快。

任何幫助將非常感激!

MySQL中的DATE列格式為YYYY-MM-DD ,而DATETIME列格式為YYYY-MM-DD HH:MM:SSMySql Datetime Documentation

您的DateTime值變量將日期時間格式化為YYYY/MM/DD HH:MM:SS

我首先建議您將您的\\更改為-

編輯:

同樣,如注釋中所示,您不應在一個<option>使用多個value屬性。 我不確定您要使用第二個值實現什么,但是我建議您刪除它!

第二編輯:

$day2-7相比,您的$day1變量也有所不同:

 $day1_value = $day1->format('Y/m/d');

對於其他所有日期,您的$day{X}_value變量均設置為其他日期格式。 我建議您只在代碼頂部設置一個模式作為變量,然后使用它。

例如

$datetime_pattern = 'Y-m-d H:i:s';
...
$day1_value = $day1->format($datetime_pattern);
...
${'day' . $i . '_value'} = ${'day' . $i)->format($datetime_pattern);

因此,上面我們了解到,必須在選項中設置值,錯誤的代碼以及對我而言錯誤地意識到要執行將值分配給變量的工作,這是一個非常糟糕的主意。

實際將值設置為變量的是什么?

 <select name="nd_date" id="nd_date">
  <option value="'.$day1_value.'" value='.($nd_delivery_date == '').' selected>Today      '.$day1_value.'</option>

選擇名稱! 因此,這被稱為nd_date,而我實際上很關心將值設置為nd_delivery_date的變量。

  <select name="nd_delivery_date" id="nd_date">
  <option value="'.$day1_value.'" selected>Today'.$day1_value.'</option>

我的代碼非常錯誤,此處突出顯示了您不完全理解的復制代碼的陷阱!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM