0

私はサーバーのリストを持っています。まず、サーバーをオンライン ユーザーの多い順に並べたいと思います。

しかし、現在進行中のサーバーがあり、現在オンラインのプレイヤーが最も多い場合は、無視したいと思います。

基本的にPLAYERS COUNT+ステータス=利用可能で注文するのですが、うまくいきませんか?

$query = $this->controller->db->fetch("argonite_servers", null, null, "server_status = 'Available', server_players");

そして、これが私の方法です:

    public function fetch($table, array $criteria = null, $limit = null, $order = null)
    {
        // The query base
        $query = "SELECT * FROM $table";
        
        // Start checking
        if ($criteria) {
            $query .= ' WHERE ' . implode(' AND ', array_map(function($column) {
                return "$column = ?";
            }, array_keys($criteria)));
        }
        
        // limit
        if ($limit) 
        {
            $query .= " LIMIT ". $limit;
        }
        
        //order
        if ($order)
        {       
            $query .= " ORDER BY ".$order." DESC";
        }
        
        $check = $this->pdo->prepare($query) or die('An error has occurred with the following message:' . $query);
        if ($criteria)
            $check->execute(array_values($criteria));
        else
            $check->execute();
        return $check;
    }

利用可能なすべてのサーバーが表示されず、トップに最も多くのプレイヤーがいるのはなぜですか?

現在、私の表はこれを示しています:

画像
(情報源: gyazo.com )
;

私は何を間違えましたか?

4

1 に答える 1

1

あなたは句がおそらくどこにいるでしょうメソッド呼び出しでand句を別々に保つのではなく、select * from argonite_servers where server_status = 'Available' order by server_players desc; マージしたようです。ordercriteria

だから代わりに

$query = $this->controller->db->fetch("argonite_servers", null, null, "server_status = 'Available', server_players");

あなたが望むかもしれません:

$query = $this->controller->db->fetch("argonite_servers", "server_status ='Available'", null, "server_players");

編集:

「利用可能」ステータスがアルファベット順にソートされていることを幸運であることを示す「利用可能」ステータスを維持するには、次のようにします。

$query = $this->controller->db->fetch("argonite_servers", null, null, "server_status ASC, server_players");    
于 2013-07-28T19:00:19.137 に答える