2012-10-20 58 views
-1

我對我做錯了什麼感到困惑。我已經在許多資源中看到了這一點,包括我正在學習PHP的書,看起來它應該是正確的......但它不起作用。內部連接ot返回第二個和第三個表的結果

<?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'; 

這將返回第一個表(公園)中的所有數據就好了。項目評論名稱,評論,事件,日期和描述2來自連接表(事件和評論)

如果我回應'$ row ['state']'我得到一個正確的答案。但是,如果我回應其他表中的任何項目(例如$ row ['comment']),我不會得到任何結果。

我錯過了什麼?

+0

你不上市返回數據,而不是返回列來自任何連接表的列返回 –

+0

馬克,我不明白你的答案。我應該在哪裏列出它們,而不是在數組中?他們在陣列中。 – user1483042

+0

該數組是從$ row中由SQL返回的$ result生成的...但如果您的$ sql沒有列出列,那麼它們將不在$ row中...查看下面的列表示例列,而不是一個完整的解決方案 –

回答

0

SQL SH由於如何從連接表

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' 
; 

這不是一個完整的解決方案,但豪的演示,從連接表純粹從主表

+0

WOW這正是我正在尋找的。有效。非常感謝。我已經嘗試過好幾天了,你是一個救生員。 – user1483042

0

不是你寫的查詢返回他們...

<?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); 
} 

或者你可以得到所有(提防,如果有在TABL列,具有相同的名稱ES,這是不行的!):

$sql = 'SELECT * 
    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'; 
+0

我想獲取所有的數據。我正在排序並在include中顯示它。每個表都有一個名爲id的列。這可能是問題嗎? – user1483042

0

請試試這個:

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); 
} 
+0

這給我一個語法錯誤,意外) – user1483042

+0

請嘗試我的更新 –

+0

我做到了。我收到一個語法錯誤:「意外)」 – user1483042

相關問題