PHP / MySQL - 订购行

时间:2011-06-04 17:13:30

标签: php mysql

我正在使用一行来返回特定项目的所有用户,这不是问题。但是,我如何订购它以便第一个结果始终是登录用户。

我看到两种解决方案,我试过这两种解决方案都没有成功:

  1. 打印用户名,然后使用if语句仅打印行的其余部分(如果它们与用户名不同)。

    print user's name;
    if (username !== user's name) {
        print this name;
    }
    
  2. 连续打印所有内容,但以某种方式对其进行排序,以便当前用户位于顶部。

  3. 有什么想法吗?

    修改

    我现在正在尝试使用以下代码:

    $query7 = mysql_query("SELECT users_ID FROM projects_users WHERE projects_id = '$id' AND WHERE users_id <>'$q6[0]'") or die(mysql_error());
    

    但我收到错误:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE users_id <>'1'' at line 1
    

    我试过了!=而不是&lt;&gt;但我看不出有什么问题!

    没关系,修理它。供将来参考,不确定WHERE两次;)

    感谢大家的帮助。

4 个答案:

答案 0 :(得分:2)

你的第一个解决方案是完美的。

如果您想使用第二个解决方案,您应该像这样构建SQL查询:

(SELECT * FROM user WHERE id = :currentUserID) UNION (SELECT * FROM user)

你很好

答案 1 :(得分:1)

我认为你可以用一个简单的mysql查询来做到这一点:

SELECT * FROM table_name ORDER BY FIELD(username, 'username');

要了解更多信息: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

答案 2 :(得分:1)

如果你想使用php,你可以试试这样的东西

$currentuser = "";

$otherusers = "";

if(username == user's name)
{

$currentuser = username;

}
else
{
 $otherusers .= username;

}

echo $currentuser;
echo $otherusers;

答案 3 :(得分:1)

SELECT *
  FROM USERS
 ORDER BY  (CASE user_id WHEN :currentUserID THEN 1 ELSE 2 END);