【问题标题】:How to insert result of date difference into mysql database using php?如何使用 php 将日期差异的结果插入 mysql 数据库?
【发布时间】:2018-07-26 18:24:51
【问题描述】:
    <?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 could not be convert to string in C:\xampp\htdocs\date.php on line 45” 我不知道如何纠正这个问题..请帮我解决这个问题。

【问题讨论】:

  • 警告:尽可能使用prepared statements来避免在查询中注入任意数据并创建SQL injection bugs。在mysqli 和PDO 中执行这些操作非常简单,其中任何用户提供的数据都使用? 或:name 指示符指定,稍后使用bind_param 或execute 填充,具体取决于您是哪个使用。
  • 您需要将日期表示为ISO-8601 格式化字符串,而不是任意插值的PHP 对象:YYYY-MM-DD HH:MM:SS。

标签: php mysql date-difference


【解决方案1】:

您必须使用 format 将其转换为字符串:

<?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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多