对于每个循环没有正确列出结果

时间:2013-04-14 01:18:43

标签: php mysql

我有这个查询

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'而不是'name'。下面是循环

<?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'是连接新闻表和公园表的内容,在此表中是“名称”的来源。感谢

2 个答案:

答案 0 :(得分: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 ';

答案 1 :(得分:0)

首先,您的查询只返回带有&#39; name&#39;的park_id。别名。您不能从表格中选择任何名称。 其次,您无法以您的方式获得查询结果。试试这个:

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