php - 显示来自表连接 mysql 的某些 id

标签 php mysql join

我创建了一个与users 表和teams 表连接的表。 用户只能属于一个团队,因此他们的帐户有一个 team_id。

如何显示所有不同的组以及属于该组的成员?

这是我的代码。目前只显示id为1的团队,user表中有1个team_id为1的用户

<?php
include_once 'dbconfig.php';
if(!$user->is_loggedin())
{
 $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM teams
INNER JOIN users
ON teams.id=users.team_id
HAVING teams.id=1");
$stmt->execute();
$teamRow=$stmt->fetchall(PDO::FETCH_ASSOC);

?>

<h1>Teams</h1> 
<table>
 <tr> 
     <?php foreach($teamRow as $row): ?>   
        <th><?=$row['team_name']?></th>
        </tr> 
         </tr> 
<td> <?=$row['user_name']?></td>
 </tr>
<?php endforeach; ?>
<a href="home.php">Home</a>
</table> 

最佳答案

试试这个代码

1) 从查询中删除 HAVING 子句,只对用户进行简单 JOIN 并添加 ORDER BY team_name ASC
2)在php循环中执行逻辑

<table>
    <?php $teamName = ''; // assign teamName for loop ?>
    <?php foreach($teamRow as $row): ?>
    <?php
        if($row['team_name'] != $teamName) {
            $teamName = $row['team_name']; // set teamName for loop if not equal
    ?>
    <tr>
        <th><?=$row['team_name']?></th>
    </tr>
    <?php } ?> 
    <tr>
        <td><?=$row['user_name']?></td>
    </tr>
    <?php endforeach; ?>
    <tr>
        <td><a href="home.php">Home</a></td>
    </tr>
</table>

逻辑是:(用例)
- 在循环中,如果 $row team_name 不等于 teamName,则显示 teamName 并设置
- 然后显示用户名
- 再次循环,$row team_name 等于 teamName,因此不再显示 teamName

希望对你有帮助

关于php - 显示来自表连接 mysql 的某些 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247517/

相关文章:

PHP MySQL 双 While 循环给我带来问题

PHP 抓取没有扩展名的远程图像

mysql - 当我只想要一个时,数据库表连接显示同一行的多个条目

IIS 上的 PHP 7 : Call_user_function could not be located

php - 使用数组为 switch 语句动态生成 case

php - 正则表达式将文本月份更改为数字

mysql - 如何在shell脚本中获取从mysql中删除的行数

mysql - mysql 中的自增主键与删除

c# - 我在C#应用程序中遇到此错误,找不到column2

带有 COUNT ON LEFT JOIN 的 MySQL 查询