从两个mysql表中加入列
问题描述:
我想弄清楚以下几点。一开始我要检查,如果一个成员是在组11,43或1从两个mysql表中加入列
我有列如下表:我在寻找它显示的名称从查询
table members (member_id, name, group)
334 Ronald 43
table content (member_id, value)
334 Gold
会员和价值的内容,加入了与member_id和最终的结果类似
罗纳德黄金
如果用户不在我已经设置了组,他/她将不会显示。
以下是我已经成功地做到
$sql = 'SELECT * FROM members m INNER JOIN content p ON m.member_id = p.member_id ';
$retval = mysql_query($sql, $conn);
和
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo $row['member_id']. " " .$row['value'];
echo "<br>";
}
将输出334金。
我只需要在开始时检查组,并在最终输出中用name替换member_id。任何帮助?
答
只要调整您的MySQL查询:
$sql = 'SELECT m.name, p.value FROM members m JOIN content p ON m.member_id = p.member_id WHERE m.group = 1 OR m.group = 11 OR m.group = 43;
然后
echo $row['name']. " " .$row['value'];
而且你应该使用mysqli_query()
或PDO::query()
自mysql_query()
已弃用。 Reference
+0
非常感谢!我也改变为mysqli,并且一切都按照原样运行。 – DxDogo
答
如果您将echo $row['member_id']
更改为echo $row['name']
,则会回显结果,您将获得该成员的姓名。
返回$row['group']
会告诉你哪个组的成员是在
答
你的SQL应该返回下面的结构为每行
(member_id, name, group, value)
过滤掉的成员并不需要的群体修改查询
$sql = 'SELECT * FROM members m INNER JOIN content p ON m.member_id = p.member_id WHERE m.group IN (11,43,1) ';
旁注:
考虑使用PDO或mysqli_ *,而不是mysql_ *,因为mysql_ *已被弃用,并在PHP7中消失
2个关注领域:您自动假设您的查询成功,接下来:您仍在使用'mysql_ *'函数,这些函数从PHP 7开始已弃用。请考虑切换到'mysqli_'或'PDO'扩展 – Derek
查询在哪里检查用户是否在其中一个组中? – Barmar
@OliverQueen感谢您的关注。如果查询失败,我确实有一个声明,只是没有在这里复制它。我也做了需要的mysqli开关。 – DxDogo