簡體   English   中英

Mysql選擇where和order by

[英]Mysql select where and order by

我有一個點系統,就像人們可以升級到[PRO1]用戶。 每個人的權利(pro1,pro2,用戶)都存儲在我的mysql用戶表中。 但是我想做一點飼料,顯示最新的升級到[PRO1]。 升級代碼:

 $insert = "UPDATE `users` SET `points` = (`points`-50) WHERE `username` = '".$username."' and points > 50";
mysql_query($insert);
if (mysql_affected_rows() > 0)
{

    // other codes

  $insert =  "UPDATE users SET rights=' [PRO1]' WHERE `username` = '".$username."'";
    mysql_query($insert); 
header('location: succesupgrade.php');
}else{
    echo "You don't have enough points";
}


?>

升級代碼工作正常(只是因為我需要添加一個時間/日期。我想要“'用戶名'的最后一個升級到[PRO1]”的代碼在這段代碼中:

    <?php
require("dbc.php");  
$query = mysql_query("select * from users WHERE rights='[PRO1]' order by right DESC limit 1") or die(mysql_error());

while($array = mysql_fetch_array($query)) {
    echo "{$array['username']}<br>";
}
?>was the last to upgrade to:
<?php
require("dbc.php");  
$query = mysql_query("select * from users WHERE rights='[PRO1]' order by rights DESC limit 1") or die(mysql_error());

while($array = mysql_fetch_array($query)) {
    echo "{$array['rights']}<br>";
}
?>

但是那段代碼給了我這個錯誤: 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 'DESC limit 1' at line 1 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 'DESC limit 1' at line 1

order by right必須在第二個代碼塊的第一個查詢中order by rights

該查詢無法告訴您最后一個用戶升級到rights='[PRO1]' 那只是一個字符串字段。 您需要某種日期時間/時間戳字段,該字段在用戶權限更改時更新,您可以通過該字段進行排序。

您也不需要進行2次查詢。 你有兩個查詢做同樣的事情。

做就是了:

SELECT username FROM users WHERE rights='[PRO1]' ORDER BY update_timestamp DESC LIMIT 1

其中update_timestamp是權限更改時更新的字段。

原因是因為right是一個二手關鍵字,你需要一個回擊來解決這個問題:

喜歡 :

select * from `users` WHERE rights='[PRO1]' order by `rights` DESC limit 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM