Как вставить результат разницы дат в базу данных MySQL, используя PHP?

0
    <?php
    function find_days($start_date, $end_date) {
    $response = new stdClass();
    try {
    $sdate = new DateTime($start_date);
    $edate = new DateTime($end_date);
    $dateInterval = $edate->diff($sdate);
    $response->status = true;
    $response->result = $dateInterval;
    return $response;
    } catch (Exception $e) {
    $response->status = false;
    $response->result = 'Invalid Date Format';
    return $response;
    }
    } 
    ?>            
    Start Date: <input type="date" name="sdate" placeholder="start date" /> 
    End Date: <input type="date" name="edate" placeholder="end date" /> 
    <input type="submit" value="Find Days" />
    <?php
           if (isset($_POST['sdate']) && $_POST['sdate']) {
            $start_date = $_POST['sdate'];
            $end_date = $_POST['edate'];
            //now call the function
            $days_array = find_days($start_date, $end_date);
            if ($days_array->status) {
            echo " <input  type='text' name='day' 
            value='.$days_array>result>days.' />";
            $day = $_POST['day'];                   
            $query   = "INSERT into cart (date,edate,days) 
            VALUES('$start_date','$end_date','$day')";
            $success = $conn->query($query);
            if (!$success) {
            die("Couldn't enter data: ".$conn->error);  
            }
            } else {
                echo $days_array->result;
            }
        }

Мой код работает отлично. Но результат отображается только на экране. Поэтому я попытался сохранить результат, поместив его в текстовое поле, а затем вставить в таблицу обычным способом. Но у меня есть ошибка "Catchable fatal error: Object of class DateInterval не может быть преобразован в строку в C:\xampp\htdocs\date.php в строке 45" Я не знаю, как исправить это. Пожалуйста, помогите мне решить этот.

  • 0
    ВНИМАНИЕ : По возможности используйте подготовленные операторы, чтобы избежать внедрения произвольных данных в ваши запросы и создания ошибок SQL-инъекций . Это довольно просто сделать в mysqli и PDO, где любые предоставленные пользователем данные указываются с ? или :name указатель :name который позже заполняется с помощью bind_param или execute зависимости от того, какой из них вы используете.
  • 0
    Вы должны выражать свои даты в виде строк в формате ISO-8601 , а не в виде объекта PHP, который произвольно интерполируется: YYYY-MM-DD HH:MM:SS .
Теги:
date-difference

1 ответ

0

Вы должны преобразовать его в строку, используя формат:

<?php
$now = new DateTime();
$hour = new DateTime( "now +1hours +13minutes +22seconds" );
$diff = $now->diff( $hour );

echo $now->format('Y-m-d H:i:s');
echo "\n";
echo $hour->format('Y-m-d H:i:s');
echo "\n";
echo $diff->format('%H:%I:%S');

Выход

2018-07-26 20:53:42
2018-07-26 22:07:04
01:13:22

Ещё вопросы

Сообщество Overcoder
Наверх
Меню