php和MySQL中的行匹配和返回
我很想得到一些帮助。我正在使用php和MySQL建立一个网站。我目前有3个表,我将在示例中包含较少的表。基本上我有一个用户表、一个组表和一个组链接表。我拥有的是用户表中的uid 我应该如何在php中实现这一点,这样我就可以,比方说:将用户uid匹配到grouplink uid,获取它匹配的grouplink gid,将grouplink gid匹配到groups gid并返回groups grpname?并进行while循环,以便显示与用户关联的所有组名 提前感谢那些愿意伸出援手的人 用户php和MySQL中的行匹配和返回,php,mysql,foreign-keys,while-loop,Php,Mysql,Foreign Keys,While Loop,我很想得到一些帮助。我正在使用php和MySQL建立一个网站。我目前有3个表,我将在示例中包含较少的表。基本上我有一个用户表、一个组表和一个组链接表。我拥有的是用户表中的uid 我应该如何在php中实现这一点,这样我就可以,比方说:将用户uid匹配到grouplink uid,获取它匹配的grouplink gid,将grouplink gid匹配到groups gid并返回groups grpname?并进行while循环,以便显示与用户关联的所有组名 提前感谢那些愿意伸出援手的人 用户 --
-------
| uid |
-------
| 1 |
-------
---------------
| gid |grpname|
---------------
| 1 | grp1 |
---------------
| 2 | grp2 |
---------------
组
-------
| uid |
-------
| 1 |
-------
---------------
| gid |grpname|
---------------
| 1 | grp1 |
---------------
| 2 | grp2 |
---------------
grouplink
-------------------
| glid| uid | gid |
-------------------
| 1 | 1 | 1 |
-------------------
| 2 | 1 | 2 |
-------------------
uid在用户中是fk to uid,而gid在组中是fk to gid这只是一个简单的双向联接查询:
SELECT users.uid, groups.gid, groups.grpname
FROM users
INNER JOIN grouplink ON users.uid = grouplink.uid
INNER JOIN groups ON grouplink.gid = groups.gid
连接查询结果的实际检索与单个表查询没有什么不同-您只需要处理更多字段。这只是一个简单的双向连接查询:
SELECT users.uid, groups.gid, groups.grpname
FROM users
INNER JOIN grouplink ON users.uid = grouplink.uid
INNER JOIN groups ON grouplink.gid = groups.gid
连接查询结果的实际检索与单个表查询没有什么不同-您只需要处理更多字段。将获取所需内容的SQL查询如下所示(假设grouplink表中没有空值):
将获得所需内容的SQL查询如下(假设grouplink表中没有空值): 这里有一个方法:
SELECT users.uid, groups.gid, groups.grpname
FROM users u, groups g, grouplink gl
WHERE g.id = gl.gid
AND gl.uid = u.uid
这里有一个方法:
SELECT users.uid, groups.gid, groups.grpname
FROM users u, groups g, grouplink gl
WHERE g.id = gl.gid
AND gl.uid = u.uid
当用户id位于变量
$iUserId
中时,可以查询以下sql字符串:
$sSql = "SELECT groups.`grpname` FROM groups
INNER JOIN grouplink ON groups.`gid` = grouplink.`gid`
WHERE grouplink.`uid` = '" . intval($iUserId) . "'";
$rRes = mysql_query($sSql);
$aGroups = array();
while (($aRow = mysql_fetch_array($rRes)) !== false) {
$aGroups[] = $aRow['grpname'];
}
现在,与用户关联的所有组都位于数组
$aGroups
中。当用户id位于变量$iUserId
中时,您可以查询以下sql字符串:
$sSql = "SELECT groups.`grpname` FROM groups
INNER JOIN grouplink ON groups.`gid` = grouplink.`gid`
WHERE grouplink.`uid` = '" . intval($iUserId) . "'";
$rRes = mysql_query($sSql);
$aGroups = array();
while (($aRow = mysql_fetch_array($rRes)) !== false) {
$aGroups[] = $aRow['grpname'];
}
现在,与用户关联的所有组都位于数组
$aGroups
Ahh,内部联接中。我在学习MySQL时跳过了一个主题。哦,好吧,看看我付出的代价。幸好有这个地方。谢谢,巴德。啊,内在的结合。我在学习MySQL时跳过了一个主题。哦,好吧,看看我付出的代价。幸好有这个地方。谢谢,巴德。