簡體   English   中英

如何修復“未捕獲的 PDOException:...從字符串轉換日期和/或時間時轉換失敗”?

[英]How to fix "Uncaught PDOException: ...Conversion failed when converting date and/or time from character string"?

我正在使用 full-Calendar 開發事件日歷。 在日歷上刪除事件后,我收到上述錯誤。 似乎需要轉換日期格式,我不確定我應該怎么做。 在我之前的一個問題中,有人建議我使用像 yyyy-mm-dd hh:mm 這樣的東西會更好,並且應該使用 momentJs 來完成。

由於我對 js 非常陌生,因此我不確定我應該如何更改代碼以及應該更改哪些內容。

這是代碼:

   document.addEventListener('DOMContentLoaded', function() {
  var Calendar = FullCalendar.Calendar;
  var Draggable = FullCalendarInteraction.Draggable;

  var containerEl = document.getElementById('external-events');
  var calendarEl = document.getElementById('calendar');
  var checkbox = document.getElementById('drop-remove');


 new Draggable(containerEl, {
    itemSelector: '.fc-event',
    eventData: function(eventEl) {
    return {
      title: eventEl.innerText
     };
   }
  });

 var calendar = new Calendar(calendarEl, {
 plugins: ['interaction', 'dayGrid', 'timeGrid'],
 header: {
   left: 'prev,next today',
  center: 'title',
  right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
editable: true,
droppable: true,
eventReceive: function(info) {

  //get the bits of data we want to send into a simple object
  var eventData = {
    title: info.event.title,
    start: info.event.start,
    end: info.event.end
  };
  console.log(eventData);
  //send the data via an AJAX POST request, and log any response which comes from the server
  fetch('add_event.php', {
      method: 'POST',
      headers: {
        'Accept': 'application/json'
      },
      body: encodeFormData(eventData)
    })
    .then(response => console.log(response))
    .catch(error => console.log(error));
    }
 });
  calendar.render();
});

const encodeFormData = (data) => {
  var form_data = new FormData();

for (var key in data) {
   form_data.append(key, data[key]);
  }
  return form_data;
}

索引.php

<link href='https://unpkg.com/@fullcalendar/core@4.4.0/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/daygrid@4.4.0/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/timegrid@4.4.0/main.min.css' rel='stylesheet' />
<script src='https://unpkg.com/@fullcalendar/core@4.4.0/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/interaction@4.4.0/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/daygrid@4.4.0/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/timegrid@4.4.0/main.min.js'></script>


<div id='external-events'>
  <p>
<strong>Draggable Events</strong>
 </p>
 <div class='fc-event'>My Event 1</div>
  <div class='fc-event'>My Event 2</div>
  <div class='fc-event'>My Event 3</div>
  <div class='fc-event'>My Event 4</div>
  <div class='fc-event'>My Event 5</div>
  <p>
    <input type='checkbox' id='drop-remove' />
    <label for='drop-remove'>remove after drop</label>
  </p>
</div>
<div id='calendar-container'>

add_event.php

require 'connection.php';
    $title = $_POST['title'];
    $start = $_POST['start'];
    $end = $_POST['end'];
        $conn = DB::databaseConnection();
       $conn->beginTransaction();
$sqlInsert = "INSERT INTO Events ( title, start, [end]) VALUES ( :title, :start, :end)";
    $stmt = $conn->prepare($sqlInsert);
    $stmt->bindParam(':title', $title);
    $stmt->bindParam(':start', $start);
    $stmt->bindParam(':end', $end);
    if ($stmt->execute()) {
            $conn->commit();
            return true;
        } else {
            $conn->rollback();
            return false;
        }

    ?>

事件詳細信息需要保存在 ms-sql 數據庫中。 該函數位於 add_event.php 文件中。 如果您也想查看該代碼,請告訴我,我也會發布該代碼。

如果您使用的是 momentJS,並且假設您已經在頁面中包含了 momentJS 文件,那么:

start:moment(info.event.start).format("YYYY-MM-DD HH:mm"),
end:moment(info.event.start).format("YYYY-MM-DD HH:mm" )

應該做的伎倆。 有關詳細信息,請參閱https://momentjs.com/docs/#/displaying/format/

暫無
暫無

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

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