【问题标题】:PHP Query LIMIT DESC not working properlyPHP 查询 LIMIT DESC 无法正常工作
【发布时间】:2015-01-21 12:31:06
【问题描述】:

我正在尝试获取玩过我的游戏的玩家的高分(前 10 名)列表。 一切正常,除了一件事,列表不正确。 前 10 个人是正确的,但是当我转到第 2 页时,列表并没有进一步完成。

变量解释

$gamemode = "Endless"
$filter = "Score"
$startNum = Page1 = 0, Page2 = 10
$maxlimit = 10

查询:

$query = "SELECT ID, Gamemode, Name, Score, ContainersSaved, TimePlayed, Date, ScorePerMinute
FROM $dbName . `highscore`
WHERE Gamemode='$gamemode'
ORDER by `$filter` DESC
LIMIT $startNum, $maxlimit";

有谁知道我做错了什么?

【问题讨论】:

  • 变量 $startNum 怎么样。检查一下。
  • 能否请您复制您的表并在sqlfiddle.com 上使用示例数据?

标签: php mysql sql-limit


【解决方案1】:

如果您的 Score 字段是 varchar,请尝试:(或将其更改为 INT)

$order=$filter;
if($filter=='Score') {
    $order="ABS($filter);
}
$query = "SELECT ID,Gamemode,Name,Score,ContainersSaved,TimePlayed,Date,ScorePerMinute FROM $dbName . `highscore` WHERE Gamemode='$gamemode' ORDER by $order DESC LIMIT $startNum, $maxlimit";

【讨论】:

  • 如果我这样做,我会得到一个错误:错误 500 内部服务器错误,我认为你在代码中忘记了一个“?
【解决方案2】:

我修复了它,我忘记将“分数”字段从 varchar 更改为 INT,所以它试图在字符串而不是 INT 上下降。

感谢 Imaginaerum 给我的提示 :)

【讨论】:

  • 一个 SO 答案与评论不同
猜你喜欢
  • 2016-11-29
  • 2014-06-18
  • 1970-01-01
  • 2012-01-14
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多