使用date()方法选择DATEDIFF()AS DAYS
问题描述:
我已经使用DATEDIFF方法来获得两个使用日期(YYYY:mm:DD HH:MM:ss)函数获得的日期的差异,但是获取每次输出0,即使差异超过1天。使用date()方法选择DATEDIFF()AS DAYS
这里是我的代码 -
if(isset($_GET['rt']))
{
$dateis=$_GET['rt'];
}
date_default_timezone_set('Asia/Kolkata');
$date = date('Y-m-d H:i:s');
if(mysqli_query($conn, "UPDATE issued_books SET Date_returned = '$date' WHERE Book_id = '$bk_id' AND Date_issued = '$dateis'"))
{
$fine = sprintf("SELECT DATEDIFF('%s','%s') AS DAYS",
'$date', '$dateis');
$fine = $fine*10;
mysqli_query($conn, "UPDATE member_db SET Fine_amt = (Fine_amt + '$fine') WHERE Member_id = '$mem'");
}
任何有点帮助将是非常感激,谢谢:)
答
1.去除单引号 '$日期' 和 '$ dateis'
$fine = sprintf("SELECT DATEDIFF('%s','%s') AS DAYS", $date, $dateis);
2. $fine = $fine*10;
//这将不起作用,因为查询还没有在mysql中执行,这就是为什么你总会得到不想要的结果
并始终净化你的参数,以避免SQL注入
@Tiger我被建议做到这一点,看到这里 - http://stackoverflow.com/a/43111907/7744098 –
不错,但我没有得到预期的结果。 –
那个向我推荐sprintf()解决方案的人使用了硬编码值,正如你在该页面上看到的那样,它对这些值工作正常,但对于那些人来说工作正常,我从date()函数 –