2013-04-14 20 views
0

我有這個疑問每個迴路未上市的結果正確

try 
{ 
$sql2 = 'SELECT tpf_news.park_id name 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name ORDER BY date DESC ' ; 
$result2 = $pdo->query($sql2); 
} 
catch (PDOException $e) 
{ 
$error = 'Error fetching news by park: ' . $e->getMessage(); 
include 'error.html.php'; 
exit(); 
} 

它會創建一個有新聞報道主題公園的列表。每個公園有許多新聞報道。問題是,當我嘗試在每個循環中回顯結果時,我只看到'park_id'而不是'名稱'。下面是循環

<?php foreach ($result2 as $row2): ?> 


<h3> 
<?php echo $row2['name'].''.$row2['park_id']; ?> 
</h3> 
<br> 


<?php endforeach; ?> 

如果我改變,我可以讓「名」的順序出現,但不是「park_id」。奇怪的是,park_id正在通過$ row2 ['name'],它的$ row2 ['park_id']迴應,這似乎什麼都不做。我究竟做錯了什麼?

如果它在'新聞'表中有幫助,那麼重要的欄是'news_id',它是關鍵字和'park_id'。 'park_id'是將新聞表連接到公園表的地方,在這張表中是'姓名'從中拉出來的地方。由於

+1

你的發佈代碼中沒有'foreach' – Cal

+0

你從無處獲取'$ row2'。而你沒有取得任何結果! – Fabio

+0

對不起,我忘了粘貼循環的頂部,過去了我的睡前時間!它已被編輯,現在在那裏。 – themeparkfocus

回答

1

要麼你就錯過字段之間用逗號:

$sql2 = 'SELECT tpf_news.park_id, name 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name 
ORDER BY date DESC '; 

或者你正在嘗試使用的別名,我會指定如下:

$sql2 = 'SELECT tpf_news.park_id as park_name 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name 
ORDER BY date DESC '; 
+0

這是一個不熬夜學習PHP和MySQL的課程,它是一個簡單的缺失逗號。謝謝 – themeparkfocus

0

首先,你的查詢只返回帶有'name'別名的park_id。您不要從表中選擇任何名稱。 其次,你不能像你那樣得到查詢結果。試試這個:

while($row2 = $result2->fetch()){ 
    echo $row2['name']; 
}