SQL查询按列显示最后一行

时间:2013-08-19 13:57:49

标签: php mysql

我试图在我的情况下显示由特定用户名(变量)提交的所有信息:

<?php
$Username = $_SESSION['VALID_USER_ID'];

$q = mysql_query("SELECT * FROM `article_table` ORDER BY FIELD (Username, '.$Username.') DESC LIMIT 1");
while($db = mysql_fetch_array($q)) { ?>

Your Articles: <?=$db['Subject'];?><br />

<? } ?>

但是不行,我会从表中显示最后一篇文章主题(例如)而不是特定的用户名,我错了吗?

2 个答案:

答案 0 :(得分:2)

这不是ORDER BY的工作原理。首先需要使用WHERE子句过滤结果。

$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `other_column` DESC LIMIT 1");

将此查询中的other_colum替换为日期列的名称:ie。 date_created

答案 1 :(得分:0)

以下是您的查询:

SELECT *
FROM `article_table`
ORDER BY FIELD (Username, '.$Username.') DESC
LIMIT 1;

这应该返回您正在寻找的用户名。逻辑是当名称匹配时字段返回1,否则返回0。所以降序关键字首先放置匹配。如果没有匹配,那么你将得到另一行。

据推测,数据不存在。您可以通过运行来轻松测试:

SELECT *
FROM `article_table`
WHERE Username = '.$Username.';