2011-07-27 276 views
0

我試圖做的是從過去的30天顯示的文章,但我有到位的代碼一直給我一個mysql_fetch_assoc錯誤,則可以追溯到我的查詢顯示結果PHP

這是代碼:

$sql = mysql_query("SELECT * 
         FROM table 
        WHERE DATE (datetime) = (CURDATE() - INTERVAL 7 DAY) 
        ORDER BY ID DESC"); 

while ($runrows = mysql_fetch_array($sql)) 

有人可以給我指示如何實際使代碼正常工作嗎?以下是錯誤

警告:mysql_fetch_array():提供的參數不是一個有效的MySQL結果資源

+0

您能告訴我們您收到的錯誤嗎? – EdoDodo

+0

我更新了問題 – capernicuzzz

+0

該警告意味着您的查詢失敗,請更改「mysql_query(...);」到「mysql_query(...)或死(mysql_error());」獲得更多有意義的信息。 –

回答

0

試試這個:

$sql = mysql_query("SELECT * FROM table WHERE DATE (datetime) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) ORDER BY ID DESC"); 

我已經改變了兩件事情:

  1. 使用DATE_SUB()來減去日期。
  2. 使用>=而不僅僅是=查找過去一週中的所有日期。
+0

我試過了,但它仍然給出了相同的mysql fetch assoc錯誤 – capernicuzzz

+0

你試過只是在mysql中運行查詢嗎? –

2

我不認爲你需要在WHERE條款'的。取而代之的

WHERE DATE (datetime) = 'CURDATE() - INTERVAL 30 DAY' 

嘗試:

WHERE DATE (datetime) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) 
+0

我試過這個,但它仍然給我相同的mysql錯誤 – capernicuzzz

+0

編輯我的答案 –

+0

得到它。謝謝 – capernicuzzz

0

喜歡的東西:

$sql = mysql_query("SELECT * 
        FROM table 
        WHERE DATE BETWEEN '" . date('Y-m-d',strtotime('now')) . "' AND '" . date('Y-m-d',strtotime('-30 days')) . "' 
        ORDER BY ID DESC" 
); 

應該得到這樣的:

SELECT * 
FROM table 
WHERE DATE BETWEEN '2011-07-26' AND '2011-06-26' 
ORDER BY ID DESC 

請注意,date('Y-m-d')是在數據庫中記錄日期的方式。所以改變它就像你的數據庫一樣。

+0

Stillg等錯誤 – capernicuzzz

+0

數據庫中的日期格式是什麼?通過在日期之間添加''來編輯代碼 – Warface