PHP/HTML表数据按变量排序?

use*_*133 -1 php

我从我的数据库中取出了两个数据并将它们分开,然后将$ 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>";
    }
?>
Run Code Online (Sandbox Code Playgroud)

忽略$ row ['Runecraftinglvl']和其他人.

基本上我希望我的表通过我在上面声明的变量"$ Kdr"来打印分割数据.

我试过这样做:

    $query = mysql_query("SELECT * FROM `high` ORDER BY `" . $kdr . "` DESC LIMIT 20");
Run Code Online (Sandbox Code Playgroud)

还有这个

    $query = mysql_query("SELECT * FROM `high` ORDER BY `$Kdr` DESC LIMIT 20");
Run Code Online (Sandbox Code Playgroud)

两者都给我这个错误:警告:mysql_fetch_array()期望参数1是资源,第90行/home/justxpp1/public_html/gxx/highscores.php中给出的布尔值

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

Pan*_*tes 5

您试图在从查询中获得结果,在SQL查询中对值进行排序,该值仅在php中计算.$Kdr您定义的变量也是一个数字,您不能ORDER在数字上,而是必须在列名称上进行排序.你可以用这样的东西在sql中进行排序

SELECT kills/deaths AS kdr
FROM high
ORDER BY kdr DESC LIMIT 20
Run Code Online (Sandbox Code Playgroud)

编辑:

完整的代码看起来像这样.注意:请仔细阅读原始问题中的第一条评论.使用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>";
}
Run Code Online (Sandbox Code Playgroud)