我可以在php中查询这个数组以生成结果吗?还是应该在MySQL中进行查询?
在下面的数组中,我收集了一个结果表中的数据。此数据显示用户击败最多的玩家,无论是玩家1还是玩家2我可以在php中查询这个数组以生成结果吗?还是应该在MySQL中进行查询?,php,mysql,arrays,Php,Mysql,Arrays,在下面的数组中,我收集了一个结果表中的数据。此数据显示用户击败最多的玩家,无论是玩家1还是玩家2 [[{"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Charles"}, {"player2_id":"31","player2_name":"Jamie Ch
[[{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player2_id":"31","player2_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"31","player1_name":"Jamie Charles"},
{"player1_id":"32","player1_name":"steve downs"},
{"player1_id":"31","player1_name":"Jamie Charles"}]]
如您所见,playerX\u id:31出现9次,5次为player2\u id,4次为player1\u id
(为了得到这个表,我必须运行2次查询,并将两个结果添加到表中——一个用于所讨论的用户为玩家1时,另一个用于用户为玩家2时)
基本上,我想从这些数据中做的就是看看什么playerX_id
出现得最多,并取相应的名称
因此,我希望的输出是Jamie Charles
我可以从这个数组中执行此操作,还是应该在MySQL级别执行此操作
这是我的桌子:
+----------------+-------------+------+-----+---------+----------------+
|字段|类型|空|键|默认|额外|
+----------------+-------------+------+-----+---------+----------------+
|结果| id | int(11)| NO | PRI | NULL |自动增量|
|社区| id | int(11)| NO | | NULL ||
|player1|u id | int(11)| NO | | NULL ||
|玩家1|u name | varchar(50)| NO | | NULL ||
|球员1队|瓦尔查尔(50)|否| |空||
|球员1球|内线(11)|无| |空||
|player1|u结果| varchar(3)|否| |空||
|球员2球|内线(11)|无| |空||
|player2|u结果| varchar(3)|否| |空||
|player2|u id | int(11)| NO | | NULL ||
|玩家2|u name | varchar(50)| NO | | NULL ||
|球员2队|瓦尔查尔(50)|否| |空||
|播放者1|u pts | int(11)| NO | | NULL ||
|播放者2分整(11)无空|
|日期|日期|否|空||
+----------------+-------------+------+-----+---------+----------------+
这是我的MySQL查询:
public function getTotalMostWinsAgainst($playerId){
$returnValue = array();
$sql = "SELECT player2_id, player2_name FROM `results` WHERE player1_id = '".$playerId."' AND player1_result = 'W'";
$result = $this->conn->query($sql);
if($result != null && (mysqli_num_rows($result) >= 1)){
while($row = $result -> fetch_array(MYSQLI_ASSOC)){
if(!empty($row)){
$returnValue[] = $row;
}
}
}
$sql = "SELECT player1_id, player1_name FROM `results` WHERE player2_id = '".$playerId."' AND player2_result = 'W'";
$result = $this->conn->query($sql);
if($result != null && (mysqli_num_rows($result) >= 1)){
while($row = $result -> fetch_array(MYSQLI_ASSOC)){
if(!empty($row)){
$returnValue[] = $row;
}
}
}
return $returnValue;
}
}
尝试:
这将根据玩家1获胜时最像玩家2的名称给出第一个结果顺序,反之亦然您还可以显示数据库结构或查询吗?似乎只需一个查询就可以做到这一点
select member, count(*) Total
from
(
select player2_name as member
from results
WHERE player1_id = 2 AND player1_result = 'W'
union all
select player1_name
from results
WHERE player2_id = 2 AND player2_result = 'W'
) AS T
group by member
order by Total desc
Limit 1