如果采用主键,PHP / SQLite下推行

时间:2015-02-18 23:03:09

标签: php sqlite primary-key

我正在制作一个HighScore类,用于保存SQLite数据库中的高分。如果不止一个玩家获得相同的分数,那么我希望将新分数放在列表中的旧分数之上,将旧分数推到一行。

该表由列" rwId","得分"和"姓名"。首先,我将得分记为" PRIMARY KEY",以便列表按分数排序(向后)。但后来我认为最好将rowId设为主键,并在保存分数时设置此ID。这样,列表将以正确的顺序排列,以便以后更容易删除最低分。

无论哪种方式,如果主键已经被前一个分数占用,那么表中的旧分数和它下面的所有行都需要向下推一行。

这可能吗?

这是我到目前为止所做的事情(这并不是很重要):

  public function CheckRank($score) {
  $this->stmt = $this->sql->prepare('SELECT score, rowId FROM highscore ORDER BY score DESC LIMIT 10;');
  $this->stmt->execute();
  $this->res = $this->stmt->fetchAll(PDO::FETCH_ASSOC);


//Check what the 10 highest scores are an what row in the DB they're on
$i=0;
foreach ($this->res as $key => $value) {
  $scorearray[$value['rowId']] = $value['score'];
  $i++;
}

//Check if this score has already been set. If so, push old scores down and insert the new one
$rowsearch = array_search ($score, $scorearray); 
if($rowsearch)
 {
// HOW?
 }
}

0 个答案:

没有答案