我从我的数据库中取出了两个数据,然后将它们分开。然后使$ Kdr打印出计算值。
<?php
$query = mysql_query("SELECT * FROM `high` ORDER BY `$Kdr` DESC LIMIT 20");
while($row = mysql_fetch_array($query)){
if ($row["kills"] != 0) {
$Kdr = $row["kills"] / $row["deaths"];
}
echo "<tr><td><a href='personalhs.php?query={$row["playerName"]}'>".$row['Runecraftlvl']."</a></td><td>".$row['kills']."</td><td>".$row['Runecraftxp']."</td><td>".$Kdr."</td></tr>";
}
?>
忽略$ row ['Runecraftinglvl']和其他人。
基本上我希望我的表能够通过上面声明的变量“$ Kdr”对数据进行排序,打印出分割后的数据。
我试过这样做:
$query = mysql_query("SELECT * FROM `high` ORDER BY `" . $kdr . "` DESC LIMIT 20");
和这个
$query = mysql_query("SELECT * FROM `high` ORDER BY `$Kdr` DESC LIMIT 20");
两个都给我这个错误: 警告:mysql_fetch_array()期望参数1是资源,第90行/home/justxpp1/public_html/gxx/highscores.php中给出的布尔值
我做错了什么? 感谢。
答案 0 :(得分:5)
您正在尝试对SQL查询中的值进行排序,该值仅在php 中计算>>后从所述查询中获得结果。您定义的变量$Kdr
也是一个数字,您不能在数字上ORDER
,而是必须在列名上订购。您可以使用类似的
SELECT kills/deaths AS kdr
FROM high
ORDER BY kdr DESC LIMIT 20
编辑:
完整的代码看起来像这样。 注意:请仔细阅读原始问题中的第一条评论。使用mysql_
函数是非常不明智的。
$query = mysql_query("SELECT playerName, kills, deaths, kills/deaths AS kdr FROM high ORDER BY kdr DESC LIMIT 20)";
while($row = mysql_fetch_array($query)){
$Kdr = $row["kdr"];
echo "<tr>
<td>Name: ".$row["playerName"] ."</td>
<td>Kills ".$row["kills"] ."</td>
<td>Deaths: ".$row["deaths"] ."</td>
<td>Kill death ratio: ".$Kdr ."</td>
</tr>";
}
答案 1 :(得分:1)
您可以直接在查询中进行计算和排序,例如:
SELECT kills/deaths as kdr, playerName, Runecraftlvl FROM high GROUP BY playerName ORDER BY kdr DESC LIMIT 20;