Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 从第二个和第三个表返回结果的内部联接_Php_Arrays_Inner Join - Fatal编程技术网

Php 从第二个和第三个表返回结果的内部联接

Php 从第二个和第三个表返回结果的内部联接,php,arrays,inner-join,Php,Arrays,Inner Join,我对自己做错了什么感到困惑。我在很多参考资料中都查到了这一点,包括我正在学习PHP的那本书,它似乎应该是正确的……但它就是不起作用 <?php try { $sql = 'SELECT parks.id, parks.state, parks.name, parks.description, parks.site, parks.sname, parks.street, parks.city, parks.zip, parks.phone FROM parks INNER JOIN

我对自己做错了什么感到困惑。我在很多参考资料中都查到了这一点,包括我正在学习PHP的那本书,它似乎应该是正确的……但它就是不起作用

<?php

try
{
    $sql = 'SELECT parks.id, parks.state, parks.name, parks.description, parks.site, parks.sname, parks.street, parks.city, parks.zip, parks.phone FROM parks
INNER JOIN comments ON parks.parkid = comments.parkid
INNER JOIN photos ON parks.parkid = photos.parkid 
INNER JOIN events ON parks.parkid = events.parkid';
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
    $error = 'Error fetching data: ' . $e->getMessage();
    include 'output.html.php';
    exit();
}

foreach ($result as $row)
{
    $datas[] = array ('id' =>$row['id'],
    'parkid' =>$row['parkid'],
    'state' =>$row['state'], 
    'name' =>$row['name'], 
    'description' =>$row['description'], 
    'site' =>$row['site'], 
    'sname' =>$row['sname'],
    'street' =>$row['street'], 
    'city' =>$row['city'], 
    'phone' =>$row['phone'],
    'zip' =>$row['zip'],
    'commentname' =>$row['commentname'],
    'comment' =>$row['comment'],
    'event' =>$row['event'],
    'date' =>$row['date'],
    'description2' =>$row['description2']);
}

include 'writing.html.php';

您编写查询不是为了返回它们

<?php

try
{
    $sql = 'SELECT parks.id, parks.state, parks.name, parks.description, parks.site, parks.sname, parks.street, parks.city, parks.zip, parks.phone 
    --insert here any other column names you want to have in PHP
    FROM parks
    INNER JOIN comments ON parks.parkid = comments.parkid
    INNER JOIN photos ON parks.parkid = photos.parkid 
    INNER JOIN events ON parks.parkid = events.parkid';
    $result = $pdo->query($sql);
}
请试试这个:

try
{
    $sql = 'SELECT parks.id, parks.state, parks.name, parks.description, parks.site, parks.sname, parks.street, parks.city, parks.zip, parks.phone FROM parks
INNER JOIN comments INNER JOIN photos INNER JOIN events ON parks.parkid = comments.parkid and parks.parkid = photos.parkid and parks.parkid = events.parkid';
$result = $pdo->query($sql);
}

显示如何从联接表返回列的SQL

SELECT parks.id, 
       parks.state, 
       parks.name AS park_name, -- use an alias when column names exist in more than one table
       parks.description, 
       parks.site, 
       parks.sname, 
       parks.street, 
       parks.city, 
       parks.zip, 
       parks.phone,
       comments.comment, -- to return the comment from the comments table
       events.name AS event_name, -- return name from the event table
       event_date  -- return date from the event table
  FROM parks 
  INNER JOIN comments 
          ON parks.parkid = comments.parkid 
  INNER JOIN photos 
          ON parks.parkid = photos.parkid  
  INNER JOIN events 
          ON parks.parkid = events.parkid'
;

这不是一个完整的解决方案,但演示了如何从联接表返回数据,而不仅仅是从主表返回数据

如果您没有列出任何联接表中要返回的列,我不明白您的答案。除了在数组中,我应该在哪里列出它们?它们在数组中。数组是根据SQL在$row中返回的$result生成的。。。但是如果您的$sql没有列出列,那么它们就不会在$row中。。。请参阅下面的答案,以获取列出列的示例,而不是完整的解决方案。我正在尝试获取所有数据。我正在将其排序并显示在include中。每个表都有一个名为id的列。这可能是问题所在吗?请直接在数据库中尝试此查询。执行的操作与我的原始代码相同$name['phone']返回正确,$name['comment']不返回任何内容。我检查了一下,每个公园id都有“评论”条目,所以这不是问题……哇,这正是我想要的。成功了。非常感谢。我已经试了好几天了,你是救命恩人。
SELECT parks.id, 
       parks.state, 
       parks.name AS park_name, -- use an alias when column names exist in more than one table
       parks.description, 
       parks.site, 
       parks.sname, 
       parks.street, 
       parks.city, 
       parks.zip, 
       parks.phone,
       comments.comment, -- to return the comment from the comments table
       events.name AS event_name, -- return name from the event table
       event_date  -- return date from the event table
  FROM parks 
  INNER JOIN comments 
          ON parks.parkid = comments.parkid 
  INNER JOIN photos 
          ON parks.parkid = photos.parkid  
  INNER JOIN events 
          ON parks.parkid = events.parkid'
;