我有一个数据库,我试图在我的游戏服务器中显示前20名玩家。我正在从我的数据库中检索所有20个人,但我想显示他们的名字以及他们拥有的“积分”数量。我的问题是,在显示前20名的表中,它没有显示他们最后的已知别名,然后我需要在另一个表clients
中搜索以匹配玩家ID和最后已知的别名,但是如何我会在clients
上做一个foreach来匹配所有20个玩家的别名,它只返回第一个别名,可以在foreach查询中看到。
查询前20名球员 -
$query = "
SELECT *
FROM `xlr_playerstats`
ORDER BY `xlr_playerstats`.`kills` DESC
LIMIT 0 , 20
";
try
{
$stmt = $b3->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$rows = $stmt->fetchAll();
然后返回“客户端ID”,我需要交叉引用最后已知别名的clients
表。然后我尝试对所有这些ID进行foreach查询以获取别名,但它只会返回foreach中的第一个循环。
foreach($rows as $row):
$query = "
SELECT *
FROM `clients`
WHERE id = ".$row["client_id"]."
";
try
{
$stmt = $b3->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$names = $stmt->fetch();
endforeach;
如何使用foreach来取回所有20个客户别名的成功查询?
答案 0 :(得分:3)
我认为您想使用加入。
SELECT *
FROM `xlr_playerstats`
INNER JOIN `clients` ON `clients`.`id` = `xlr_playerstats`.`client_id`
ORDER BY `xlr_playerstats`.`kills` DESC
LIMIT 0 , 20