1

我正在尝试对从 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());

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

4

3 回答 3

2

你在这里错过了一个分号和一个空格:

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

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

于 2013-04-15T13:07:49.007 回答
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());
于 2013-04-15T13:07:11.717 回答
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());
于 2013-04-15T13:05:14.900 回答