Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 加入2个表时发生SQL错误_Php_Mysql_Sql_Database_Join - Fatal编程技术网

Php 加入2个表时发生SQL错误

Php 加入2个表时发生SQL错误,php,mysql,sql,database,join,Php,Mysql,Sql,Database,Join,对不起,让我修改一下。我有三张桌子: 年度活动 •事件ID •YearID •id 日期 •YearID •年份 事件 •事件ID •事件名称 •事件类型 我想从三个表中显示一条记录,如下所示: 事件名称-年份:马拉松-2008 我将它链接到一个名为“members”的表,该表包含一个ID编号字段(members ID) 因此,我可以将结果限制为成员id=$un(这是会话中的用户名) 我需要连接这三个表,并将结果限制在特定的ID号记录中 以下是我的代码部分: $query = "SELEC

对不起,让我修改一下。我有三张桌子:

年度活动
•事件ID
•YearID
•id

日期
•YearID
•年份

事件
•事件ID
•事件名称
•事件类型

我想从三个表中显示一条记录,如下所示:

事件名称-年份:马拉松-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>";
    }       
$query=“SELECT*FROM members JOIN events\u year ON members.id=events\u year.id”;
“在Event.EventID=events\u year.EventID中选择*FROM Event JOIN events\u year ON Event.EventID,其中用户名='$un';
“选择*从日期加入事件\u year ON Date.YearID=events\u year.YearID,其中用户名='$un'”;
$results=mysql\u查询($query)
或者死(mysql_error());
while($row=mysql\u fetch\u数组($results)){
echo$行[“年];
回声“-”;
echo$row['Event'];
回声“
”; }
这些通知几乎可以自我解释。结果集中没有
'Year'
'EventName'
字段。由于没有给出表结构,很难(或:不可能)解释为什么会发生这种情况,但我想:
'Year'
日期
-表的一个字段,
'EventName'
事件
-表的一个字段-您只从
成员中进行选择,所以这些字段不会出现

我不明白为什么有三条sql语句,但只有一条被分配给一个变量——另外两条只是站在那里,什么也不做。请解释这一点,并在您的问题中加入更多信息,包括您试图实现的目标、表结构的外观以及您的预期结果

我认为您真正想要做的是某种连接查询,所以请看一下它是如何工作的

最后,我认为您的查询应该如下所示:

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'

这些通知几乎是自我解释的。结果集中没有
'Year'
'EventName'
字段。由于没有给出表结构,很难(或:不可能)解释为什么会发生这种情况,但我想:
'Year'
日期
-表的一个字段,
'EventName'
事件
-表的一个字段-您只从
成员中进行选择,所以这些字段不会出现

我不明白为什么有三条sql语句,但只有一条被分配给一个变量——另外两条只是站在那里,什么也不做。请解释这一点,并在您的问题中加入更多信息,包括您试图实现的目标、表结构的外观以及您的预期结果

我认为您真正想要做的是某种连接查询,所以请看一下它是如何工作的

最后,我认为您的查询应该如下所示:

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'

查询输出中是否存在“年”字段?我怀疑没有。

查询输出中是否存在“年”字段?我怀疑没有。

字符串$query仅使用第一行文本:

    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";
而不是其他人

查询本身不返回任何名为Year或EventName的字段


执行var_dump($row)以找出返回的内容。

字符串$query仅使用第一行文本:

    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";
而不是其他人

查询本身不返回任何名为Year或EventName的字段


执行var_dump($row)以找出返回的内容。

表定义是什么?您自己是如何调试的?您是否尝试打印/记录了
$row
的内容?您不能运行三个这样的select查询。任何帮助都会得到感谢。为什么要将其命名为“SQL错误”?没有SQL错误。表定义是什么?您自己是如何调试的?您是否尝试打印/记录了
$row
的内容?您不能运行三个这样的select查询。任何帮助都会得到感谢。为什么要将其命名为“SQL错误”?没有SQL错误。您在标题中还说您正在加入表。你也许应该对此做一点研究,因为“加入”可能不是你想象的那样。sql语句中的“join”关键字很重要。此外,您在标题中说您正在加入表。你也许应该对此做一点研究,因为“加入”可能不是你想象的那样。sql语句中的“join”关键字很重要。我很惊讶你可以有一个名为“Date”的表,我以为这是MySQL中的保留字。编辑:哦,看来你可以。直到。不过,我不推荐这样做。我很惊讶你能有一个名为“Date”的表,我还以为这是MySQL中的一个保留字。编辑:哦,看来你可以。直到。尽管如此,我不推荐这是一个好的做法。