-1

我从我的数据库中取出两个数据并将它们分开,然后让 $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 中给出的布尔值

我究竟做错了什么?谢谢。

4

2 回答 2

5

您正在尝试对 SQL 查询中的值进行排序,该值仅在从所述查询中获得结果后才在 php 中计算。此外,您定义的变量$Kdr是一个数字,您不能ORDER对数字进行排序,而是必须对列名进行排序。你可以用这样的东西在sql中进行排序

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>";
}
于 2013-01-28T21:16:56.523 回答
1

您可以直接在查询中计算和排序,例如:

SELECT kills/deaths as kdr, playerName, Runecraftlvl  FROM high GROUP BY playerName ORDER BY kdr DESC LIMIT 20;
于 2013-01-28T21:30:54.013 回答