2012-10-11 100 views
1

我想顛倒數組的順序。PHP顛倒MySQL數據庫結果的順序

我的代碼:

$result = mysql_query("SELECT * FROM notfi1 WHERE Own='" .$_GET['u']. "'"); 
while($row = mysql_fetch_array($result)) 
    { 
    echo 'link:<a href=member.php?u=' .$row['UserId']. '>text</a><br>'; 
    } 

輸出:

<a href=member.php?u=name8>text</a> 
<a href=member.php?u=name9>text</a> 
<a href=member.php?u=name10>text</a> 

,我想扭轉這種局面:

<a href=member.php?u=name10>text</a> 
<a href=member.php?u=name9>text</a> 
<a href=member.php?u=name8>text</a> 
+0

請不要使用'mysql_ *'函數來編寫新的代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。查看[*紅色框*](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

回答

4

展示最新的ID的第一隻sorty有兩種解決方法:

  1. 排序你的鏈接降
  2. 使用array_reverse或rsort

解決方案#1:

"SELECT * FROM notfi1 WHERE Own='" .$_GET['u']. "' ORDER BY UserId DESC" 

解決方案2:

$result = mysql_query("SELECT * FROM notfi1 WHERE Own='" .$_GET['u']. "'"); 
while($row = mysql_fetch_array($result)) 
{ 
    $data[] = $row['UserId']; 
} 
rsort($data); 
foreach($data as $item){ 
    echo 'link:<a href=member.php?u=' .$row['UserId']. '>text</a><br>'; 
} 

第二種方法比較好,因爲它意味着你是從你的顯示器的分隔條件的數據檢索......它應該做這種方式,但並不妨礙你的排序MySQL服務器上的數據

+0

作品,謝謝:)。 – Nmmsda

1

添加ORDER BY UserId DESC到SQL讓數據庫做它你:

$result = mysql_query("SELECT * FROM notfi1 WHERE Own='" .$_GET['u']. "' ORDER BY UserID DESC"); 

旁註:

與該代碼你該死的最好祈禱沒有人去yoururl.com/yourpage.php?u='%20OR%201%3D1%20--或者更糟。我建議你閱讀SQL注入攻擊。

如果這不是您正在修改的舊代碼,那麼您首先不應該使用mysql_*函數。他們已被棄用。

+0

我的代碼是示例,我的真實代碼是檢查isnumbric和即時通訊使用htmlspcialchars – Nmmsda

+0

只需使用PDO做查詢,不需要htmlspecialchars。 – s1h4d0w

4

如果要通過用戶ID

$result = mysql_query("SELECT * FROM notfi1 WHERE Own='" .$_GET['u']. "' ORDER BY UserId DESC"); 
while($row = mysql_fetch_array($result)) 
{ 
    echo 'link:<a href=member.php?u=' .$row['UserId']. '>text</a><br>'; 
}