我几天都在努力解决这个问题,但是我已经达到了我公认的有限的mysql知识的极限。我有两个表,组和派对,使用查找表groupparty有两列groupid和partyid。鉴于某一方,我只想拉出与该方相关的群组。以下是我一直在努力解决的剧本:
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/includes/connect.inc.php';
$partyid = '71';
$sql = "SELECT groupid FROM groupparty WHERE groupparty.partyid='$partyid'";
$result = mysqli_query($link, $sql);
while ($row = mysqli_fetch_array($result))
{
$groupids[] = array('groupid' => $row['groupid']);
}
$sql = "SELECT groupname FROM groups WHERE id='$groupids'";
$result = mysqli_query($link, $sql);
while ($row = mysqli_fetch_array($result))
{
$groups[] = array('groupname' => $row['groupname']);
}
include 'show.html.php';
exit();
?>
show.html.php中的html调用:
Group(s):
<?php foreach ($groups as $group): ?>
<?php htmlout($group['groupname']); ?>
<?php endforeach; ?>
这当然给了我以下错误:
Group(s):
Warning: Invalid argument supplied for foreach() in show.html.php on line 2
我知道问题是SELECT groupname FROM groups WHERE id='$groupids'
的尝试。但是如何处理这种常见情况呢?
感谢。
答案 0 :(得分:0)
使用联接只需一个查询即可完成所有操作:
SELECT groups.groupname
FROM groupparty
JOIN groups
ON groups.id = groupparty.groupid
WHERE groupparty.partyid='$partyid'
或者,如果您想继续执行此操作,请使用SQL表达式IN (..., ..., ...)
来匹配多个ID中的任何一个。我不建议这样做。