从两个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。任何帮助?

+1

2个关注领域:您自动假设您的查询成功,接下来:您仍在使用'mysql_ *'函数,这些函数从PHP 7开始已弃用。请考虑切换到'mysqli_'或'PDO'扩展 – Derek

+0

查询在哪里检查用户是否在其中一个组中? – Barmar

+0

@OliverQueen感谢您的关注。如果查询失败,我确实有一个声明,只是没有在这里复制它。我也做了需要的mysqli开关。 – DxDogo

只要调整您的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中消失