-1

データベースから 2 つのデータを取り出して分割し、$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");

両方とも私にこのエラーを与えます:

私は何を間違っていますか?ありがとう。

4

2 に答える 2

5

上記のクエリから結果を取得した、php でのみ計算される SQL クエリの値を並べ替えようとしています。$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 に答える