我尝试使用此查询根据用户位置更新表格
$default='0';
mysql_select_db($database_catchapp, $catchapp);
$updateSQL = sprintf("UPDATE competitors SET position= $default= ($default+1) ORDER BY score DESC" );
$Result= mysql_query($updateSQL, $db) or die(mysql_error());
但是当我执行它时,从第一个记录到最后一个记录更新位置为0。
我期待的是它应该根据总分从1
更新到最后一个记录
答案 0 :(得分:0)
这是您插入数据库的信息,这是您使用数据库计算和检索的信息。
每个参赛者都已经在数据库中输入了分数,如果您尝试保存他们的位置,那么每次分数改变时都需要重新计算并重新保存。
无论如何,这是毫无意义的,因为按位置列出它们只是对数据进行排序的一种方式,而排序数据是计算机擅长的。
如果您运行SELECT * FROM competitors ORDER BY score DESC
,您将按排名获得结果。如果您还需要一个运行列,请尝试以下操作:
SET @rank = 0;
SELECT *, (SELECT @rank:=@rank + 1) AS rank FROM competitors ORDER BY score DESC
答案 1 :(得分:0)
$default=0;
mysql_select_db($database_catchapp, $catchapp);
$default= ($default+1) ;
$updateSQL = sprintf("UPDATE competitors SET position= $default ORDER BY score DESC" );
声明为字符串。
这样做:
{{1}}