首頁 >資料庫 >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:18305瀏覽

How to Fix

PHP MySQL 插入日期格式:解決無效日期問題

將日期插入MySQL 資料庫有時會導致資料庫出現錯誤儘管代碼中的日期格式正確,但僅插入“0000-00-00 00 00 00”。當 MySQL 無法辨識日期格式時,就會出現此問題。

要解決此問題,必須遵循MySQL 接受的指定日期格式:

  • 字串格式: 'YYYY-MM-DD' 或'YY- MM-DD' 可選分隔符號。
  • 數位格式: YYYYMMDD 或 YYMMDD,前提是它代表有效日期。

在給定的程式碼中,日期以以下格式接收: 08/25/2012',MySQL 無法辨識。因此,我們需要將日期格式修改為支援的格式之一。

解決日期格式問題的選項:

  1. 設定日期選擇器: 使用altField 和<code data-type="javascript">傳遞日期的格式到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')

其他注意事項:

  • 避免使用有🎜> 使用帶有參數化的準備好的語句查詢以防止安全
  • 使用MySQL 5.5 建議:
  • 使用 mysqli 擴充或 PDO_MySQL 而非已棄用的 mysql_* 函式。
  • 考慮 DATE 類型:
  • 使用如果您只需要儲存日期而無需儲存時間,則使用 MySQL DATE 類型而不是 DATETIME 或 TIMESTAMP資訊。

以上是如何修正 PHP 和 MySQL 中的「0000-00-00 00:00:00」日期插入錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn