更新时间:2022-12-25 17:58:48
for loop()
,而是使用while loop()
进行查询.我知道您通过查询结果的数量来循环它,但是它只会得到第一行的值.如果您分配当前的循环号并将其作为数组附加到变量,也许是可行的.$ranking
的计数器,该计数器将在每个循环中递增(已删除$num_results
,因为您不再需要它了.)?>
将PHP括起来.while loop
来显示数据(如果查询正确).for loop()
and instead use a while loop()
for your query. I know you loop it by the number of results of the query, but it will only get the value of the first row. Maybe it is feasible if you assign the current number of the loop and attach it to the variable as array.$ranking
that will increment on every loop (removed the $num_results
, for you don't need it anymore).?>
before proceeding with an HTML.while loop
.您的固定代码:
<?php
require_once 'header.php';
// Send variables for the MySQL database class.
$database = mysql_connect('localhost', 'root', 'password') or die('Could not connect: ' . mysql_error());
mysql_select_db('robinsnest') or die('Could not select database');
$query = "SELECT * FROM `members` ORDER by `quiz_score` DESC LIMIT 10";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$num_results = mysql_num_rows($result);
$ranking = 1;
?>
<div class="container marketing">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<table class="gradienttable">
<tr>
<th>Position</th>
<th>User Name</th>
<th>Score</th>
</tr>
<?php
while($row = mysql_fetch_array($result)){
?>
<tr>
<td><?php echo $ranking; ?></td>
<td><?php echo $row['user']; ?></td>
<td><?php echo $row['quiz_score']; ?></td>
<?php
$ranking = $ranking + 1; /* INCREMENT RANKING BY 1 */
?>
</tr>
<?php
} /* END OF WHILE LOOP */
?>
</table>
</div>
</div>
<hr class="featurette-divider">
<footer>
<p class="pull-right"><a href="#">Back to top</a></p>
<p>2015 Students-NCI, · <a href="#">Privacy</a> · <a href="#">Terms</a></p>
</footer>
</body>
</html>
您输入的第二个代码:
<?php
require_once 'header.php';
$database = mysql_connect('localhost', 'root', 'password') or die('Could not connect: ' . mysql_error());
mysql_select_db('robinsnest') or die('Could not select database');
$query = "SELECT user, quiz_score, FIND_IN_SET( quiz_score, (
SELECT GROUP_CONCAT( quiz_score
ORDER BY quiz_score DESC )
FROM members )
) AS rank
FROM members
WHERE user = '$user';";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$num_results = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
?>
<p><?php echo $row['user']." - ".$row['quiz_score']; ?></p>
<?php
} /* END OF WHILE LOOP */
?>
<hr class="featurette-divider">
<footer>
<p class="pull-right"><a href="#">Back to top</a></p>
<p>2015 Students-NCI, · <a href="#">Privacy</a> · <a href="#">Terms</a></p>
</footer>';
</body>
</html>
prepared statement
而不是不推荐使用的mysql_*
函数,以防止
prepared statement
instead of deprecated mysql_*
functions to prevent SQL injections.