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

时间:2013-01-28 21:12:40

标签: 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>";
    }
?>

忽略$ 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中给出的布尔值

我做错了什么? 感谢。

2 个答案:

答案 0 :(得分: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>";
}

答案 1 :(得分:1)

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

SELECT kills/deaths as kdr, playerName, Runecraftlvl  FROM high GROUP BY playerName ORDER BY kdr DESC LIMIT 20;