Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php和MySQL中的行匹配和返回_Php_Mysql_Foreign Keys_While Loop - Fatal编程技术网

php和MySQL中的行匹配和返回

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循环,以便显示与用户关联的所有组名 提前感谢那些愿意伸出援手的人 用户 --

我很想得到一些帮助。我正在使用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时跳过了一个主题。哦,好吧,看看我付出的代价。幸好有这个地方。谢谢,巴德。