连接两个MySQL表

时间:2011-07-29 18:46:24

标签: php mysql

我有一个使用SMF论坛的网站(simplemachines.org)。我一直在使用它作为网站的登录,利用SSI.php文件,该文件基本上是论坛的API。

现在我已经在我的网站项目中,我想添加其他功能。我想做的一件事是添加许多用户可以拥有的自定义变量,这在修改SMF的内置用户表时很困难。我还想让用户加入“团队”。一个团队可以拥有多个用户。

我一直在使用PHP和MySQL,并学习了如何创建用户注册脚本并将用户添加到简单的单个数据库表(不再使用SMF)。

数据库表包含:

  

ID,用户名,密码(不是明文),日期

如何将我的SQL知识提升到新的水平;我现在想创建一个名为Teams的表,它将逻辑上保存这些数据:ID,名称,Admin True / False(如果需要,我希望多个团队成员成为管理员)。

我认为应该创建一个可以组建新团队的表单。提交时,如果团队名称尚不存在,请创建一个新团队,团队成员应自动成为第一个管理员。

1)我不知道如何链接2个表,这是本主题的全部内容。当我创建用户个人资料页面时,我希望它列出他所在的团队。

这意味着它需要从Users表中获取用户ID并连接它到Teams表中,如果它在Teams表中找到了他的ID,则返回包含他所有团队的数组进去,我会告诉他们我想要的。

  

我认为我发布了太多细节,但它会帮助你   我。此外,上述知识将帮助我解决所有问题   否则我想做,比如将多个团队添加到其他表中。   一旦你知道如何做就完全一样!!

     

谢谢!

2)刚刚意识到我的另一个问题,一旦我拥有这个自定义数据库,我就失去了在论坛上提供单点登录的能力,这真是太棒了。两个帐户在网站上进行交互并在论坛上进行交互是非常愚蠢的。 phpBB或其他“大玩家”论坛是否有办法轻松使用自定义数据库登录?

1 个答案:

答案 0 :(得分:3)

“链接”两个表的一种方法是创建一个成员资格表,例如

MembershipTable
-----------------------------
| UserID | TeamID | IsAdmin |
-----------------------------

这样,用户的详细信息保存在Users表中,团队定义信息保留在teams表中。

如果对于具有userid $ id的用户,您希望找到它所属的所有团队,则可以运行简单的SQL查询:

SELECT t.team_name
FROM   MembershipTable m
LEFT JOIN team_table t on M.userID = t.UserID

应该很容易从上面推断出userteam表的定义应该是什么样的。