2012-05-30 43 views
1

首先,我做了一個簡單的留言簿,現在我想讓最後的評論顯示在網站上的第一位。我的計劃是按照日期或ID的降序對數據庫中的行進行排序。以下是代碼片段:MySQL,ORDER不工作

mysql_query("SELECT * FROM `guestbook` ORDER BY `Date` DESC") or die("Mysql error: " . mysql_error()); 

此代碼不會導致任何錯誤,但註釋會在第一次顯示。 我也複製了phpMyAdmin的代碼,但結果是一樣的。 ID的類型當然是INT auto_increment,類型的日期是VARCHAR(我已經將日期和時間存儲在一個變量中)。

請幫忙。

回答

1

我希望你知道有一個完全可用的DATETIME字段,或者甚至TIMESTAMP返回格式化日期?

除此之外,這幾乎肯定是由於您的日期不是big-endian格式造成的。

嘗試ORDER BY id DESC改爲 - 它會更快,因爲它是唯一的(最好是主鍵)。

+0

我以前試過這個......我無法解釋爲什麼這段代碼不工作......:/謝謝! – Nino

+0

對不起,但「不起作用」不是一個有用的聲明。怎麼了? –

+0

對不起...評論顯示爲第一次,就像我的問題中的句子:( – Nino

1

Date列更改爲DATETIME列類型,它會正確排序。

VARCHAR上排序取決於您存儲數據的格式。

+0

我以前已經更改過,但之後我變成了這樣的零: 00/00/00 - 00:00:00 – Nino

+0

您存儲的日期必須是錯誤的格式才能直接轉換爲DATETIME。您可能需要一個稍微更多的進程來更新表 - 可能會解析VARCHAR字段並將正確格式化的DATETIME插入到新列中。之後,刪除當前的日期列,並重命名剛剛創建的新日期列中包含正確的DATETIME數據的新日期列。您還需要更新插入這些記錄以使用正確的DATETIME格式的任何代碼。 MySQL中的NOW()函數可以很容易地插入當前時間。 –

+0

好的,謝謝,我會在幾個小時內嘗試這個,早上在克羅地亞上午5點...最好的問候 – Nino

1

試試這個: SELECT * FROM guestbook ORDER BY ID DESC

,而不是你的日期,如果你希望你的日期順序正確確保您的日期數據類型爲datetime。

最好的問候

+0

我已經試過這個,但沒有努力:(但謝謝你的答案! – Nino

+0

請發佈你的列定義.. :) – BizApps

+0

ALTER TABLE'guestbook' CHANGE'ID''ID' INT(3)NOT NULL AUTO_INCREMENT – Nino