2011-07-27 70 views
0

我似乎無法弄清楚我要去哪裏錯了。這是我有:爲什麼不是這樣從7天內提取數據?

$query = ("SELECT * FROM contacts WHERE agentassigned = 'agent' AND reminder ='$reminder date("Y-m-d",strtotime("+7 day"))' ORDER BY firstname") or die ('Error: ' .mysql_error()); 

回答

3

MySQL不會執行你送了它在查詢的PHP代碼。

這可能不是你想要做的。相反,連接date()調用的結果。

$query = "SELECT * FROM contacts WHERE agentassigned = 'agent' AND reminder ='$reminder " . date("Y-m-d",strtotime("+7 day")) . "' ORDER BY firstname"; 

根據您的意見,你真正想要的東西是這樣的:

SELECT 
    * 
FROM 
    contacts 
WHERE 
    agentassigned = 'agent' 
AND 
    reminder_date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 7 DAY 

,你需要一列reminder_date添加到您的表,該表包含提醒的日期。你不想試圖像你在做的那樣從字符串中解析出來。這是緩慢的和錯誤的。

+0

提醒中的日期是2011-07-29,它仍然沒有顯示出使用該代碼...? – joshua76

+0

從現在起3天后,不是7天后,除非你是時間旅行者:) –

+0

因此,我在做什麼錯我的代碼,我想顯示在未來7天到期的所有提醒? – joshua76

1

您不能在雙引號字符串內插入函數調用。相反,首先做的函數調用,並將結果保存到$date

$date = date("Y-m-d",strtotime("+7 day")); 
$query = ("SELECT * FROM contacts WHERE agentassigned = 'agent' AND reminder ='$reminder $date' ORDER BY firstname") or die ('Error: ' .mysql_error()); 
+0

謝謝!我試過這個...提醒中的日期設置爲2011-07-29,它仍然沒有使用該代碼拉動提醒...... ?? – joshua76

+0

如果我想拉上那一週的時間,比如說這個星期7月24日 - 7月30日,該怎麼辦? – joshua76

+0

@ joshua76因爲在查詢中有'$ reminder'變量,所以我們必須假設它不是日期時間列,所以您需要發佈表格數據的例子。 –

1

由於您的查詢似乎到7天展望未來。嘗試「-7天」而不是「+7天」。

+0

這就是我想要在未來7天內提醒所有提醒。 – joshua76

+0

好的 - 你的標題不會這麼說。然後看到其他答案,但如果你想在接下來的7天而不是僅僅第7天,你需要<=,而不是=。 – Thilo

+0

爲此,您應該將日期存儲在DATE類型列中,而不是作爲varchar/text列中字符串的一部分。然後,您可以簡單地向數據庫詢問行「WHERE有些日期在CURRENT_DATE和CURRENT_DATE + INTERVAL 7天」。 –