对不起,让我复习一下。我有三张桌子:
events_year
·EventID
·YearID
·id
日期
·YearID
·年份
事件
·EventID
·EventName
·EventType
我想要显示三个表中的一条记录,如下所示:
EventName - Year:马拉松- 2008
我将它链接到一个名为"members“的表,其中包含一个ID号字段(members-id)。
因此,我可以将结果限制为成员id =$un(这是来自会话的用户名)
我需要连接这三个表,并将结果限制为特定的ID号记录
以下是我的代码部分:
$query = "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";
"SELECT * FROM Event JOIN events_year ON Event.EventID = events_year.EventID WHERE username = '$un'";
"SELECT * FROM Date JOIN events_year ON Date.YearID = events_year.YearID WHERE username = '$un'";
$results = mysql_query($query)
or die(mysql_error());
while ($row = mysql_fetch_array($results)) {
echo $row['Year'];
echo " - ";
echo $row['Event'];
echo "<br>";
} 发布于 2011-09-23 20:04:08
通知几乎是不言而喻的。结果集中没有'Year'和'EventName'字段。很难(或者:不可能)说出为什么会发生这种情况,因为你没有给出你的表结构,但我猜是这样的:'Year'是date-table的一个字段,'EventName'是event-table的一个字段-你只是从members中选择,所以这些字段不会出现。
我不明白为什么有三个sql语句,但是只有一个被赋值给一个变量--另外两个只是站在那里什么也不做。请解释这一点,并在你的问题中加入更多的信息,关于你试图实现的目标,你的表结构是什么样子,以及你的预期结果是什么。
我认为您真正想要做的是某种连接查询,所以请看一下the documentation,看看它是如何工作的。
最后,我认为您的查询应该如下所示:
SELECT
*
FROM
members
INNER JOIN
events_year ON members.id = events_year.id
INNER JOIN
Event ON Event.EventID = events_year.EventID
INNER JOIN
´Date´ ON ´Date´.YearID = events_year.YearID
WHERE
members.username = '$un'发布于 2011-09-23 20:04:59
查询输出中是否存在字段'Year‘?我想不会。
发布于 2011-09-23 20:06:49
字符串$query仅使用文本的第一行:
"SELECT * FROM members JOIN events_year ON members.id = events_year.id ";而不是其他人。
查询本身不会返回任何名为Year或EventName的字段。
执行var_dump($row)以找出返回的内容。
https://stackoverflow.com/questions/7528631
复制相似问题