2013-04-15 83 views
1

我想排序我的表中從MySQL生成的列數據。這是我多麼希望我的表是: -在列表中排序數據

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

這是我的查詢,但我得到一個錯誤

Parse error: syntax error, unexpected 'if' (T_IF) in C

$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()); 

我知道我的問題是,在查詢,但如何我可以糾正它嗎?

+2

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – h2ooooooo

+0

體面的IDE和一些基本的調試功能會使代碼中的錯誤非常明顯。 – vascowhite

回答

1

有由盈關鍵字的順序所需的空間,也有一些不正確的端子。現在試試。

$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()); 
+0

您的答案在mysql_query()語句末尾缺少分號。當然,它不應該在這一點上運行,但這是另一個問題。編輯:修正。 – Codeacula

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()); 
+0

儘管這確實修復了OP的一個問題,但它並沒有修復錯誤:'C'中出現'Parse error:syntax error,unexpected'if'(T_IF)。 – h2ooooooo

+1

'$ query =「SELECT * FROM users ORDER BY $ sortColumn」;'是一個可怕的主意。您需要事先驗證並清理數據。 – Codeacula

2

你錯過了一個分號,在這裏一個空間:

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

Parse error是由於缺少分號,其他的錯誤以後還會來:)