我正在使用 PHP 将数据插入数据库。我有一个名为 games 的表,它的定义方式如下:
ID | Score | Rank
我希望每次添加新行时都会更新排名列。排名列必须按分数对游戏进行排序。
例如:
ID | Score | Rank
1 | 5 | 2
2 | 9 | 1
当我添加新行(ID=3,Score=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 来完成吗?或者有没有办法将列值默认设置为分数的排名?
最佳答案
try {
$bdd->exec("SET @pos := 0;
UPDATE games SET rank= ( SELECT @pos := @pos + 1 ) ORDER BY score DESC;)");
} catch (Exception $e) {
die ($e->getMessage());
}
这对我有用。不管怎样,谢谢。
关于php - 每次添加新行时更新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52596154/