我正在使用PHP将数据插入数据库。我有一张叫做游戏的桌子,它是这样定义的:
ID | Score | Rank
我希望每次添加新行时都会更新等级列。排名列必须按得分对游戏进行排序。
例如:
ID | Score | Rank
1 | 5 | 2
2 | 9 | 1
当我添加新行(ID = 3,分数= 15)时,我的表将如下所示:
ID | Score | Rank
1 | 5 | 3
2 | 9 | 2
3 | 15 | 1
我已经在PHP中尝试过此方法,但是它似乎不起作用:
try {
$bdd->exec("INSERT INTO games(score) VALUES('$score')");
} catch (Exception $e) {
die ($e->getMessage());
}
try {
$bdd->exec("UPDATE games set rank=(SELECT @curRank := @curRank + 1
AS rank FROM games g, (SELECT @curRank := 0) r
ORDER BY score;)");
} catch (Exception $e) {
die ($e->getMessage());
}
任何想法都可以通过PHP完成吗?还是有一种方法可以将列值默认设置为分数的等级?
答案 0 :(得分:0)
try {
$bdd->exec("SET @pos := 0;
UPDATE games SET rank= ( SELECT @pos := @pos + 1 ) ORDER BY score DESC;)");
} catch (Exception $e) {
die ($e->getMessage());
}
这对我有用。还是谢谢。