我有一个'联系人'我的数据库中的表存储了人们发送给我的电子邮件。在我的管理窗格中,我想按状态订购。我的联系表已经回复了#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;
}
}
当然是显示数组的代码。
问题是:它没有正确排序。我究竟做错了什么? :(
答案 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