Php和MySQL查询使用其他表

时间:2016-01-27 07:31:37

标签: php mysql

所以我试图从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>
    "); 
  }
}

2 个答案:

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

几个建议:

  1. 不要使用 mysql _ 函数,因为已弃用
  2. 使用准备好的查询,然后你只需要遍历执行方法,看看Example 3 in this link(使用mysqli从php.net中的例子)