gpt4 book ai didi

PHP mysql order by 如果 this == this,则按此排序,否则按此排序?

转载 作者:行者123 更新时间:2023-11-29 13:42:21 26 4
gpt4 key购买 nike

我有一个服务器列表,首先我想按在线用户最多的顺序对服务器进行排序,

但是如果有一个服务器当前正在运行并且目前在线玩家最多,我想忽略它。

基本上是按 PLAYERS COUNT + status = available 排序,但不起作用?

$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;
}

为什么它不会在顶部显示所有可用的服务器+玩家最多的服务器?

现在,我的表格显示了这一点:

img
(来源:gyazo.com)
;

我做错了什么?

最佳答案

您的 where 子句可能是 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");    

关于PHP mysql order by 如果 this == this,则按此排序,否则按此排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com