我到处搜索,包括Stackoverflow,都找不到我想要的确切信息。就像我在其他网站上尝试过的那样,在StackOverFlow上也有一些答案,但它不起作用。
问题是,我正在做一个项目,其中显示了前十名的最高声誉(也就是:“排行榜/图表”),但根据声誉保持低(首先),然后随机(例如:低,高,低,中)。奇怪的是,我没有SQLi命令的经验,所以叫我菜鸟吧(我接受)。
下面是我目前写的不起作用的代码:
<h1>Leaderboards</h1>
<?php
$query = "SELECT user_name, reputation FROM m_users ORDER BY reputation DESC LIMIT 10";
?>
<div class="panel panel-default">
<div class="panel-heading">
top ten
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>User</th>
<th>Reputation Points</th>
</tr>
</thead>
<tbody>
<?php
foreach($mysqli->query($query) as $rep)
{
echo '<tr>';
echo '<td>';
echo ''.$rep['user_name'].'';
echo '</td>';
echo '<td>';
echo $rep['reputation'];
echo '</td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
</div>
</div>出现的结果是:
jay 100
ray 1000
joy 250我想要的是:“从最高到最低”(简单的图表/排行榜),例如:“在一些像”使命召唤“这样的多人在线游戏中,它通过scores...etc显示从最高到最低”。这只会产生最低、最高、最低的medium...etc。
我根本不能修复这个问题,谁能帮我检测一下这个bug?:(
发布于 2016-04-08 11:48:57
试试这样的东西
SELECT `user_name`, `reputation` FROM `m_users` ORDER BY convert(`reputation`, UNSIGNED INTEGER) DESC;发布于 2016-04-08 11:48:25
我认为这是因为数据库中的reputation列不是int,而是varchar或text。
发布于 2016-04-08 11:51:52
如果您将varchar更改为int,那么您将获得所需的结果。
下面是一个例子:http://sqlfiddle.com/#!9/830896/1
https://stackoverflow.com/questions/36490997
复制相似问题