作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果Groupname
和Username
连接正确,我希望能够回显,其中当前userid
(保存在 session 中)是$uid
。
我已经坐了好几个小时尝试各种 JOIN,最接近的是让它输出 1/?每个团队的成员,但不是全部。
编辑:
$uid = $_SESSION['uid'];
$sql = "SELECT * FROM group
INNER JOIN usergroup ON group.groupid=usergroup.groupid
WHERE usergroup.userid=$uid";
$result=$mysqli->query($sql);
if(mysqli_num_rows($result)>0) {
while($row = mysqli_fetch_array($result)) {
$gid = $row['groupid'];
$sql2 = "SELECT * FROM user
INNER JOIN usergroup ON user.userid=usergroup.userid
WHERE usergroup.groupid=$gid";
$result2=$mysqli->query($sql2);
$row2 = mysqli_fetch_array($result2);
echo "<td>".$row['groupname']."</td>";
echo "<td>".$row2['username']."</td>";
echo "<td>".$row['groupid']."</td>";
}
}
事实是,它工作得很好,除了它不会打印所有groupmembers
名称,它只打印一个。哪一个似乎取决于表中的顺序。
最佳答案
第二个查询的结果集没有循环。但是,不需要第二个 SQL 查询。一口气做完; SQL 就是为此而设计的。
此外,您将获得更简单的代码:
$uid = $_SESSION['uid'];
// Select everything you need in one go (join user table as well)
$sql = "SELECT group.group_id, group.groupname, user.username
FROM group
INNER JOIN usergroup ON group.groupid=usergroup.groupid
INNER JOIN user ON user.userid=usergroup.userid
WHERE usergroup.userid=$uid";
$result=$mysqli->query($sql);
// Don't need to call mysqli_num_rows if you continue like this:
while($row = mysqli_fetch_array($result)) {
echo "<td>".$row['groupname']."</td>";
echo "<td>".$row['username']."</td>";
echo "<td>".$row['groupid']."</td>";
}
也许你想回显一些<tr>
和</tr>
标签,否则您将把所有内容都放在一行中,例如:
echo "<tr><td>".$row['groupname']."</td>"
."<td>".$row['username']."</td>"
."<td>".$row['groupid']."</td></tr>";
关于php - 通过 MySQL/PHP 中的 JOIN 回显行(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33965221/
我是一名优秀的程序员,十分优秀!