加入两个mysql表

时间:2016-02-04 21:05:00

标签: php mysql

我想弄清楚以下内容。首先,我想检查成员是否在第11,43或1组中。

我有以下表格列:

table members (member_id, name, group)
334 Ronald 43
table content (member_id, value)
334 Gold

我正在寻找一个显示名称FROM members和value FROM content的查询,与member_id连接,最终结果如

Ronald Gold

如果用户不在我设定的群组中,他/她将不会显示。

以下是我设法做的事情

$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。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

当您将echo $row['member_id']更改为echo $row['name']时,如果您回复结果,则会获得会员的姓名。

返回$row['group']将告诉您该成员所在的组。

答案 1 :(得分:1)

只需调整你的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

答案 2 :(得分:0)

您的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