在列表中排序数据

时间:2013-04-15 13:04:10

标签: php mysql

我正在尝试对从mysql生成的表中的列数据进行排序。这就是我想要我的桌子的方式: -

<th><a href='view.php?sort=first_name'>First Name</th>
<th><a href='view.php?sort=last_name'>Last Name</th>

这是我的查询,但我收到错误

  

解析错误:语法错误,C中意外的'if'(T_IF)

 $result = mysql_query("SELECT * FROM users")
    if($_GET['sort'] == 'first_name'){
     $result .= "ORDER BY first_name";
    }
   else if ($_GET['sort'] == 'last_name'){
     $result .= "ORDER BY last_name";
    }
    or die(mysql_error());

我知道我的问题出在查询中,但我该如何纠正呢?

3 个答案:

答案 0 :(得分:2)

你错过了分号和空格:

$result = mysql_query("SELECT * FROM users ");
                                          ^  ^

Parse error是由于缺少分号,另一个错误将在稍后出现:)

答案 1 :(得分:1)

ORDER BY关键字前面需要一个空格,并且存在一些不正确的终止。不要尝试。

 $result = "SELECT * FROM users";
    if($_GET['sort'] == 'first_name'){
     $result .= " ORDER BY first_name";
    }
   else if($_GET['sort'] == 'last_name'){
     $result .= " ORDER BY last_name";
    }
$result = mysql_query($result) or die(mysql_error());

答案 2 :(得分:0)

你需要在列名和ORDER BY子句之间留出额外的空间。

$result .= " ORDER BY first_name";
            ^ add extra space here

$result .= " ORDER BY last_name";
            ^ add extra space here

完整摘录:

<击>

<击>
$query = "SELECT * FROM users";
if($_GET['sort'] == 'first_name')
{
    $query .= " ORDER BY first_name";
}
else if ($_GET['sort'] == 'last_name')
{
    $query .= " ORDER BY last_name";
}
$result = mysql_query($query) or die(mysql_error());

<击>

或者为什么不直接这样做,

$sortColumn = $_GET['sort'];
$query = "SELECT * FROM users ORDER BY $sortColumn";
$result = mysql_query($query) or die(mysql_error());