Php 连接两个MySQL表

Php 连接两个MySQL表,php,mysql,Php,Mysql,我有一个使用SMF论坛(simplemachines.org)的网站。我还利用SSI.php文件将其用作站点的登录名,该文件基本上是论坛的API 现在我已经完成了我的站点项目,我想添加额外的功能。我想做的一件事是添加用户可以拥有的大量自定义变量,这在修改SMF的内置用户表时很困难。我还想允许用户加入“团队”。一个团队中可以有多个用户 我一直在使用PHP和MySQL,并学习了如何创建用户注册脚本,以及如何将用户添加到简单的单个数据库表(不再使用SMF) 数据库表具有: ID、用户名、密码(非明文)

我有一个使用SMF论坛(simplemachines.org)的网站。我还利用SSI.php文件将其用作站点的登录名,该文件基本上是论坛的API

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

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

数据库表具有:

ID、用户名、密码(非明文)、日期

如何将我的SQL知识提升到下一个层次;现在我想创建一个名为Teams的表,该表将逻辑上保存以下数据:ID、名称、Admin True/False(如果需要,我希望多个团队成员都是管理员)

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

1) 我不知道如何链接两个表,这是本主题的全部要点。当我创建一个用户配置文件页面时,我希望它列出他所在的团队

这意味着它需要从Users表中获取他的用户ID,并将其连接到Teams表,如果它在该Teams表中找到他的ID,则返回包含他所在的所有团队的数组,我将以我想要的方式显示它们

我认为我发布的细节太多了,但这会对你有所帮助 我此外,上述知识将有助于我的一切 我还想做其他事情,比如将多个团队添加到其他表中。 一旦你知道怎么做,一切都一样

谢谢


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

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

MembershipTable
-----------------------------
| UserID | TeamID | IsAdmin |
-----------------------------
这样,用户的详细信息保存在用户表中,团队定义信息保存在团队表中

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

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

从上面可以很容易地推断出
用户
团队
表的定义应该是什么样子。

哇,真是天才。这是惯例吗?它完全消除了我头脑中的解决方案可能拥有的冗余数据。我不知道t是什么。M.尽管如此。是否知道一个好的网站,我可以在这里浏览我的sql?
t
m
只是区分这两个表的简写。我要说的是,将关联移动到单独的表中是一种常见的做法——它使数据保持规范化(请参阅)。请参阅,以获得SQL的非常好的介绍。@pr0tocol:观察得非常好。这是标准化的主要优点之一:最小冗余。您也可以考虑这种变化:而不是使用布尔字段(IsAdmin),它给了您两个选择,您可以使用<代码> char(1)< /COD>字段(称为<代码>角色< /代码>),它为用户存储<代码>“A/<代码>管理员和<代码> U' < /代码>。通过这种方式,您可以在需要时添加更多角色(
'B'
用于B-admins,
'Z'
用于Zombies,等等),而无需更改数据库结构。