Foreach里面的where语句?

时间:2013-05-25 00:08:07

标签: php mysql pdo

我有一个数据库,我试图在我的游戏服务器中显示前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个客户别名的成功查询?

1 个答案:

答案 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