条目未正确排序

时间:2014-04-29 16:30:09

标签: php email mysqli

我有一个'联系人'我的数据库中的表存储了人们发送给我的电子邮件。在我的管理窗格中,我想按状态订购。我的联系表已经回复了#39; INT列在我回复它们后立即更新。一旦我回复了电子邮件,就回复了#39;将被设置为' 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;
    }
}

当然是显示数组的代码。

问题是:它没有正确排序。我究竟做错了什么? :(

2 个答案:

答案 0 :(得分: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 :(得分:0)

SELECT * FROM contact ORDER BY 'answered' ASC

单引号分隔字符串;你基本上给每条记录一个不变的订单提示,导致根本没有订购!

要命名字段,请使用反引号:

SELECT * FROM contact ORDER BY `answered` ASC