使用SQL值作为PHP变量和strtotime查找日期差异

时间:2016-10-08 02:12:46

标签: php mysql phpmyadmin

我正在尝试确定dvd过期了多少天。我的代码是:

$query = "SELECT rental_date FROM rented_dvds WHERE dvd_id = '$dvd_id' ";
$result = mysqli_query($dbc, $query);
$newDate = DateTime::createFromFormat("l dS F Y", $result);
$startTimeStamp = strtotime("$newDate");
$endTimeStamp = strtotime("NOW");
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400;  
$numberDays = intval($numberDays);
使用NOW()租借DVD时会捕获

rented_dvds。当我运行该代码时,我得到:“警告:DateTime :: createFromFormat()期望参数2为字符串,对象在第34行的... / ... / return_dvd.php中给出”

第34行是以$ newDate变量开头的行。

这是我从不同来源拼凑而成的所有代码,但我认为我已经正确拼凑了。我一直在寻找答案,并尝试了一些不同的解决方案,但我似乎无法让它们中的任何一个起作用。

另外,这是我的第一篇文章,所以'嗨!'并感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这只是因为$ result实际上是一个可以包含多行的对象。你必须走过它才能保留你需要的特定行:

<?php

$query = "SELECT rental_date FROM rented_dvds WHERE dvd_id = '$dvd_id' ";
$result = mysqli_query($dbc, $query);
$row = $result->fetch_assoc();
$newDate = DateTime::createFromFormat("l dS F Y", $row['rental_date']);
$startTimeStamp = strtotime("$newDate");
$endTimeStamp = strtotime("NOW");
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400;  
$numberDays = intval($numberDays);

?>

答案 1 :(得分:0)

你是否以正确的方式获取?因为你是直接获取$ result,它以pbject或数组的形式给你..你必须写

$row=mysqli_fetch_array($result);
$newDate = DateTime::createFromFormat("l dS F Y", $row['rental_date']);