所以我试图从users-events表中获取所有user_id,其中event_id等于传入的变量(让我们说它现在是2)。
在数据库中,当前有2个ID已注册到该event_id,分别为1和2。
但此代码仅返回这些值中的第一个。我觉得我需要将第一个查询合并到while循环中,但我不知道如何去做。
任何帮助都会受到很大关注!
function showregisteredplayers($id){
$eventq = mysql_fetch_assoc(mysql_query("SELECT user_id FROM `users-events` WHERE event_id = '".$id."'"));
$rosterq = mysql_query("SELECT username FROM `users` WHERE `user_id` = '".$eventq['user_id']."'");
while($player = mysql_fetch_assoc($rosterq)){
echo("
<tr>
<td>".$player['username']."</td>
</tr>
");
}
}
答案 0 :(得分:1)
使用子查询然后终止你的第一个。
SELECT username FROM `users` WHERE `user_id` IN
(
SELECT user_id FROM `users-events` WHERE event_id = 5
)
休息很好,你已经在循环第二个结果集,所以这应该做。除非您拥有大量记录,否则使用IN
不会导致性能下降,否则您可以优化查询。
5显然只是一个示例,请$id
使用correctly。
答案 1 :(得分:1)
为什么不使用JOIN
?
SELECT username
FROM `users` AS u
INNER JOIN `users-events` AS ue ON u.user_id = ue.user_id
WHERE event_id = ?
几个建议: