2017-04-17 172 views
0

我在MySQL中有一個包含標準日期值(「2017-04-17」,「2017-04-18」等)的日期字段(稱爲NDate)的表。在PHP中增加日期MySQL日期

通過PHP網頁,我試圖取系統日期(比如說今天是2017-04-17),然後從上面的表中拖出所有行,其中NDate =「2017-04-17」。沒有問題,直到這裏。

我有一個要求來增加一天(從今天開始並繼續進行下一個10天 - 即2017-04-17到2017-04-26),並且每天在不同的標題下報告條目,例如「條目對於2017-04-17「,其將列出具有NDate 2017-04-17的所有行,」2017-04-18的條目「,其將列出具有NDate 2017-04-18的所有行。

我正在嘗試使用for循環和PHP date_modify函數逐一遞增日期,但它沒有顯示任何結果。
下面是代碼所選擇的部分:在網頁

date_default_timezone_set('US/Eastern'); 
$datev = date("Y-m-d"); 
for ($x = 0; $x <= 10; $x++) 
{ 
    $datev=date_modify($date,"+$x days"); 
    echo "before date format<br>";  // echo statement 1 
    echo "date is: $datev <br>";  // echo statement 2 
    $sql = "SELECT * FROM tablename where Ndate='$datev'"; 
    echo "before result<br>";   // echo statement 3 
    ... 
    ... 
    ... 
} 

輸出僅示出了聲明1.但是回波統計2和3不打印。

回答

0

可以使用的strtotime函數作爲參數傳遞給日期函數遞增天。

10天后,您可以使用for循環來構建一個天數組。然後遍歷它,執行你需要的查詢。

$today = date('Y-m-d'); 
$dates=array($today); 
for($i=1;$i<10;$i++) { 
    $NewDate=date('Y-m-d', strtotime("+".$i." days")); 
    $dates[]=$NewDate; 
} 

foreach($dates as $dt) { 
    // sql stuff here 
    echo "date is: $dt <br>"; 
    $sql = "SELECT * FROM tablename where Ndate='$dt'"; 
    echo "before result<br>"; 
    // ..... 
} 

此代碼應該適用於你的情況。如果有任何問題,請讓我知道。

+0

儘管此代碼可以回答這個問題,提供有關爲什麼和/或如何代碼回答了這個問題提高了其長期價值附加的上下文。一個***好回答***總會解釋做了什麼以及爲什麼它是以這樣的方式完成的,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

+0

@JayBlanchard你是對的,我再次補充信息的代碼示例 –

+0

我應該檢查其他的答案?或者你會花時間回去添加任何需要的信息/解釋? –

0

試試這個:

$start = strtotime(date('Y-m-d')); 
$end = strtotime(date('Y-m-d', strtotime('+10 days'))); 
while($start <= $end) 
{ 
    $date = date('Y-m-d', $start); 
    //use $date to do stuff 
    //SELECT * FROM tablename where Ndate='$date' 
    $start = strtotime("+1 day", $start); 
} 
+0

您好@gaganshera,感謝您的及時回覆。你還可以闡明一下什麼是準確的SQL語句:「$ sql =」SELECT * FROM tablename其中Ndate ='$ start「;」不返回任何結果...呼應$開始(當其值爲「2017年4月17日」即將出版的「1492412400」 – user6337701

+0

做一個值或沒有。沒有「嘗試」一個***好答案***總會有做了什麼解釋,爲什麼它以這樣的方式做,不僅爲OP,而是將來遊客到SO –

+0

@ user6337701 1492412400是[UNIX時間戳(HTTPS:// EN .wikipedia.org/wiki/Unix_time)並以數字形式表示日期。 此外,請查看我的意見回答查詢 – gaganshera