php - 如何正确输出连接表?
问题描述
我在'user.ID'='email.ID'上使用了两个带有内部连接的表。
每个用户都有一个名字和一个 ID。每封电子邮件都有一个用户名、电子邮件地址本身和一个相应的用户 ID。用户可以拥有任意数量的电子邮件地址。
通常我使用以下方法打印出我的查询结果:
$row["name"]
我像这样从数据库中选择数据:
SELECT user.name AS name, user.ID as ID, email.user AS user, email.address AS address
FROM user INNER JOIN email ON user.ID=email.ID
然后我显示一个表格并在一行中输出每个用户。
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
<table>
.
.
.
while($row = mysqli_fetch_assoc($result)) {
<tr>
<td>$row["ID"]</td>
<td>$row["Name"]</td>
<td>$row["Email"]</td>
</tr>
}
}
//this snippet is shortened simplified because I use all HTML in php echoes
当我尝试在相应的用户结果行中显示电子邮件地址时,我只是多次让用户在每一行中使用不同的电子邮件地址。
我想要的是:
我得到什么:
我如何必须选择/加入/分组表和列以及如何正确输出它们?谢谢你的帮助。我已经被困在这里好几天了。
编辑:
解决方案
SELECT
u.name,GROUP_CONCAT(e.email SEPARATOR ',') AS email
FROM users u
JOIN emails e ON e.user_id=u.id
这应该返回:
| User | Email |
-------|-------------------------------------------------|
| Nick | email1@mail.com,email2@mail.com,email3@mail.com |
然后在 PHP 中用逗号分割电子邮件字符串
推荐阅读
- git - Git:跟踪远程仓库+能够更改其中的文件
- python - 确定在 python 中从哪个文件中定义函数
- java - 没有任何特定消息的 TTransportException
- javascript - 如何使用 async.eachOfSeries
- json - localhost 中的 Access-Control-Allow-Origin 使用 odoo 和 ajax 方法发布 Api
- flyway - 当目标数据库比类路径中存在的最后一个迁移更新时,如何防止飞行路径回调运行?
- php - 如何将json响应数据转换为xml
- socialengine - 在社交引擎 php 中创建水平菜单
- java - Spring Boot 1.5.8 中的内存泄漏
- javascript - 使用 javascript 从数据库中使用 x 和 y 坐标绘制点