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

ニュース記事のあるテーマパークのリストを作成します。公園ごとに多くのニュース記事があります。問題は、for each ループで結果をエコーアウトしようとすると、「name」ではなく「park_id」しか表示されないことです。以下はループです

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


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


<?php endforeach; ?>

順序を変更すると、「name」は表示されますが、「park_id」は表示されません。奇妙なことは、park_id が $row2['name'] を介してエコーされていることです。その $row2['park_id'] は何もしていないようです。私は何を間違っていますか?

「ニュース」テーブルで役立つ場合、重要な列はキーである「news_id」と「park_id」です。「park_id」は、ニュース テーブルを公園テーブルに接続するものです。このテーブルでは、「名前」が取得される場所です。ありがとう

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 に答える