2017-04-05 81 views
1

我已經使用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'"); 
} 

任何有點幫助將是非常感激,謝謝:)

+0

@Tiger我被建議做到這一點,看到這裏 - http://stackoverflow.com/a/43111907/7744098 –

+0

不錯,但我沒有得到預期的結果。 –

+0

那個向我推薦sprintf()解決方案的人使用了硬編碼值,正如你在該頁面上看到的那樣,它對這些值工作正常,但對於那些人來說工作正常,我從date()函數 –

回答

0

1.去除單引號 '$日期' 和 '$ dateis'

$fine = sprintf("SELECT DATEDIFF('%s','%s') AS DAYS", $date, $dateis); 

2. $fine = $fine*10; //這將不起作用,因爲查詢還沒有在mysql中執行,這就是爲什麼你總會得到不想要的結果

並始終淨化你的參數,以避免SQL注入

+0

這裏是你的輸出 - SELECT DATEDIFF('2017-03-27 12:35:04','0000-00-00 00:00:00')AS DAYS –

+0

@ParvezKhan $ dateis的價值是多少? > $ dateis = $ _ GET ['rt']; – cletsimon

+0

你應該轉換成日期的$值dateis '$ dateis =日期( 'YMD H:I:S',$ _GET [ 'RT']);'或檢查它,如果它是一個validate日期 – cletsimon