0

我有一个数据库,我试图在其中显示我的游戏服务器中的前 20 名玩家。我正在从我的数据库中检索所有 20 个人,但我想显示他们的姓名以及他们拥有的“积分”数量。我的问题是,在显示前 20 名的表中,它没有显示他们最后一个已知别名,然后我需要在另一个表中搜索clients以将玩家 ID 与最后一个已知别名匹配,但是我将如何进行 foreach在将clients所有 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();

然后返回我需要交叉引用clients表以获取最后一个已知别名的“客户端 ID”。然后我尝试对所有这些 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 个客户别名'?

4

1 回答 1

3

我想你想使用一个连接。

SELECT *
FROM  `xlr_playerstats` 
INNER JOIN `clients` ON `clients`.`id` = `xlr_playerstats`.`client_id`
ORDER BY  `xlr_playerstats`.`kills` DESC 
LIMIT 0 , 20
于 2013-05-25T00:12:43.620 回答