Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Betulkan '0000-00-00 00:00:00' Ralat Penyisipan Tarikh dalam PHP dan MySQL?

Bagaimana untuk Betulkan '0000-00-00 00:00:00' Ralat Penyisipan Tarikh dalam PHP dan MySQL?

Barbara Streisand
Barbara Streisandasal
2024-12-31 17:44:18314semak imbas

How to Fix

Format Tarikh Masukkan PHP MySQL: Menyelesaikan Isu Tarikh Tidak Sah

Memasukkan tarikh ke dalam pangkalan data MySQL kadangkala boleh mengakibatkan ralat di mana pangkalan data memasukkan hanya '0000-00-00 00 00 00' walaupun format tarikh yang betul dalam kod. Isu ini timbul apabila format tarikh tidak dikenali oleh MySQL.

Untuk menyelesaikan isu ini, adalah penting untuk mengikuti format tarikh yang ditentukan yang MySQL terima:

  • String Format: 'YYYY-MM-DD' atau 'YY-MM-DD' dengan pilihan pembatas.
  • Format Angka: YYYYMMDD atau YYMMDD, dengan syarat ia mewakili tarikh yang sah.

Dalam kod yang diberikan, tarikh diterima dalam format ' 08/25/2012', yang tidak diiktiraf oleh MySQL. Oleh itu, kita perlu mengubah suai format tarikh kepada salah satu format yang disokong.

Pilihan untuk Menyelesaikan Isu Format Tarikh:

  1. Konfigurasikan Datepicker : Gunakan altField dan <code data-type="javascript">altFormat untuk menentukan format di mana tarikh dihantar ke skrip PHP. Contohnya, <code data-type="javascript">altFormat: "yyyy-mm-dd".
  2. Gunakan Fungsi STR_TO_DATE(): Tukar rentetan tarikh kepada format yang disokong MySQL menggunakan STR_TO_DATE() fungsi. Contoh:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
  3. Gunakan DateTime Object: Tukar rentetan tarikh kepada objek PHP DateTime, dapatkan rentetan terformat dan gunakannya dalam pertanyaan sisipan. Contoh:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    $date = $dt->format('Y-m-d');
    
    INSERT INTO user_date VALUES ('', '$name', '$date')
  4. Memanipulasi Rentetan Tarikh: Memanipulasi rentetan tarikh secara manual untuk menukarnya kepada format MySQL yang sah. Contoh:

    $parts = explode('/', $_POST['date']);
    $date = "$parts[2]-$parts[0]-$parts[1]";
    
    INSERT INTO user_date VALUES ('', '$name', '$date')

Pertimbangan Tambahan:

  • Elakkan SQL Injection: Gunakan pernyataan yang disediakan dengan parameter berparameter pertanyaan untuk mengelakkan keselamatan kelemahan.
  • Gunakan Pengesyoran MySQL 5.5: Gunakan sambungan mysqli atau PDO_MySQL dan bukannya fungsi mysql_* yang tidak digunakan.
  • Pertimbangkan Jenis TARIKH:

Atas ialah kandungan terperinci Bagaimana untuk Betulkan '0000-00-00 00:00:00' Ralat Penyisipan Tarikh dalam PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn