2014-04-29 65 views
0

我在我的數據庫中有一個'聯繫'表,用於存儲人們發送給我的電子郵件。在我的管理員面板中,我想按狀態排列它們。我的聯繫表有一個「回答」INT列,只要我回復他們就會立即更新。一旦我回復了電子郵件,數據庫中的「回答」將被設置爲「1」。Entrys將不會正確訂購

正如我所說的,我想用「回答」狀態下令在我adminpanel電子郵件。因此,所有已經回答問題的電子郵件(數據庫中的「0」)應該在最前面,而我已經回答的電子郵件(數據庫中的「1」)應該位於底部。

這是我當前如何得到它:

$showTheEmails = array(); 
$getEmails = mysqli_query($mysqli,"SELECT * FROM contact ORDER BY 'answered' ASC") OR die (mysqli_error($mysqli)); 
if (mysqli_num_rows($getEmails) > 0){ 
    while($row = mysqli_fetch_array($getEmails)){ 
     $row = array( 
     'contact_id' => $row['contact_id'], 
     'name' => $row['name'], 
     'email' => $row['email'], 
     'subject' => $row['subject'], 
     'timestamp' => $row['timestamp'], 
     'answered' => $row['answered']); 
     $showTheEmails[] = $row; 
    } 
} 

而且ofcourse什麼顯示數組的代碼。

問題是:它沒有正確排序。我究竟做錯了什麼? :(

+0

這個問題的整個PHP元素是沒有問題的,你可以通過直接在MySQL控制檯中運行查詢已經演繹的一部分。請僅發佈查詢並刪除'php'和'email'標籤,因爲它們不相關。 –

回答

1

通過使用單引號包裝,您已經創建了該問題。您正在指示MySQL嘗試按「回答」(而不是數據庫中的列)命令進行排序。只需刪除引號。

SELECT * FROM contact ORDER BY answered ASC 

正如評論指出的那樣,你還可以用'一段單列環繞列名狀

SELECT * FROM `contact` ORDER BY `answered` ASC 

反引號將被用於表和列標識符,但 上如果標識符是MySQL保留關鍵字,則爲必需;如果標識符包含空白字符或字符 超出限制集(見下文),則需要使用 。報價問題。

When to use single quotes, double quotes, and backticks in MySQL

+1

Lmfao im nubcake:')謝謝你,現在工作得很好。我會在10分鐘內接受你的回答。 – user3512502

+1

不要刪除引號。將它們替換爲_correct_引號,這是反引號。 –

+0

注意到你還沒有。 –

0
SELECT * FROM contact ORDER BY 'answered' ASC 

單引號限定一個;你基本上給每條記錄一個固定的訂購提示,導致沒有訂購!

要命名一個字段,使用反引號:

SELECT * FROM contact ORDER BY `answered` ASC