0

[PRO1]ユーザーにアップグレードできるようなポイント制を手に入れました。みんなの権利(pro1、pro2、user)は私のmysqlusersテーブルに保存されています。しかし、[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

4

3 に答える 3

1

order by rightorder by rights2 番目のコード ブロックの最初のクエリにある必要があります。

于 2012-12-13T20:25:41.633 に答える
1

そのクエリは、最後にアップグレードしたユーザーを通知するために何もしませんrights='[PRO1]'。それは単なる文字列フィールドです。ユーザーの権利が変更されたときに更新される、ある種の日時/タイムスタンプフィールドが必要になります。これにより、並べ替えを行うことができます。

また、2 つのクエリを実行する必要もありません。まったく同じことを行う 2 つのクエリがあります。

ただ行う:

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

update_timestamp権利が変更されたときに更新されるフィールドはどこにありますか。

于 2012-12-13T20:27:16.957 に答える
0

その理由はright、使用されているキーワードであるためです。これを解決するにはバック ストロークが必要です :;

お気に入り :

select * from `users` WHERE rights='[PRO1]' order by `rights` DESC limit 1
于 2012-12-13T20:23:14.893 に答える