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' 是将新闻表连接到 parks 表的内容,在此表中是从中提取 'name' 的位置。谢谢

4

2 回答 2

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 ';
于 2013-04-14T01:45:39.517 回答
0

首先,您的查询仅返回带有“name”别名的 park_id。您没有从表中选择任何名称。其次,您无法以您的方式获得查询结果。试试这个:

while($row2 = $result2->fetch()){
    echo $row2['name'];
}
于 2013-04-14T01:47:15.850 回答