如何从mySQL中检索时间以在PHP 7中进行比较?

时间:2017-12-31 21:38:07

标签: php mysql datetime

我想在MySQL中插入时间并检索它然后与当前时间进行比较。

尽管有很多关于这个主题的问题,但经过几个小时的搜索后,大多数人只回答了mySQL查询或如何格式化时间戳。我的案子真的很难找到。但我猜我的问题不一样了。我甚至无法从检索到的数据开始。

我们的想法是,在发布数据时,它会使用last_update_time检查数据库中的country_code。如果last_update_time在一小时内,它只会检索时间和其他数据。如果时差超过一小时,则更新DB中的行。

服务器位于远程站点,因此时区不同。并使用php 7和mySQL 5.7

在指定的时区中插入DB的时间很好,MySQL中的last_updated_time字段类型为DATETIME

function insertData($countryCode) {
  // Create connection
  $conn = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);
  // Check connection
  if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
  }

  date_default_timezone_set('Asia/Seoul'); 
  $currentTime = date("Y-m-d H:i:s");

  $sql = "INSERT INTO my_table (country_code, last_updated_time)
                              VALUES ('$countryCode', '$currentTime')";

  if (mysqli_query($conn, $sql)) {
    echo "INSERT Succeeded";
  }else {
    echo "Failed INSERT";
  }

 $conn->close();
}

以后我需要将旧时间(保存时间)与页面刷新时的当前时间进行比较。我希望来自多个时区的人们设置date_default_timezone_set()

function compareTime($countryCode){
  $conn = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);
  // Check connection
  if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
  }

  $sql = "SELECT last_updated_time FROM my_table WHERE country_code = '$countryCode'";
  $savedTime = mysqli_query($conn, $sql);

  if($savedTime->num_rows == 0) {
       echo 'does not exist';
  } else {

      date_default_timezone_set('Asia/Seoul'); 
      $currentTime =  date("Y-m-d H:i:s");
      $oldtime = strtotime($savedTime);
      $timeDiffInSec = intval(strtotime($currentTime) - $oldtime) % 60;

      $formattedOldTime = date("Y-m-d H:i:s",$oldtime);
      echo '<p>Current Time: '.$currentTime.'</p>';
      echo '<p>Old Time: '.$formattedOldTime.'</p>';
      echo '<p>Time Difference: '.$timeDiffInSec.'</p>';

      // Do the job only after 1 hour
      if ($timeDiffInSec > 60 && $currentTime > $oldtime) {
        // Do the job and update DB
      }
  }
  $conn->close();
}

compareTime('us');

我遇到的问题是我不知道如何在PHP中正确地从mySQL中节省时间。我无法在网页上打印旧时间或比较这两次。

虽然当我通过myPhpAdmin查看时,保存的时间看起来像2017-12-26 17:07:37,但这些echo的打印方式如下所示。

Current Time: 2018-01-01 06:35:55
Old Time: 1970-01-01 09:00:00
Time Difference: 55

即使echo $savedTime;也没有打印。我该如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:1)

$ savedTime是一个查询结果,您应该稍后获取结果。

试试这个:

statistics

顺便说一句,正如Funk Forty Niner在评论中提醒我的那样,你应该考虑使用prepared statements来避免SQL注入攻击。看看链接,它是值得的。