0

我正在尝试从公司表中显示公司名称,然后从另一个表中循环输出新闻。这两个表已连接。这意味着:我只想从连接中的一个表中挑选一行,并从连接中的另一个表中循环出数据。这可能吗?我下面的代码仅在我的循环中的新闻表中显示三分之二的帖子。

谢谢!

$sql = "SELECT 
            newID, newTitle, newSummary, newDate,
            comID, comName, comImageThumb
        FROM 
            tblNews a RIGHT JOIN tblCompanies b
        ON a.newCompanyID = b.comID
        ORDER BY newDate DESC";

// Get company name and display
$companyData = mysql_fetch_assoc($result);
$comName = $companyData['comName'];

echo "<a href='#' class='name'>$comName</a>";

// Looping news
while($news = mysql_fetch_assoc($result)) {
    // Display news posts
    $newTitle = $news['newTitle'];

    echo $newTitle;
}
4

4 回答 4

0

您应该查看 mysqlGROUP_CONCAT以获取更多详细信息。

于 2013-02-25T11:54:20.860 回答
0

最简单的解决方案可能是跟踪您是否处于第一次迭代中:

// query company name and news entries here

$firstRow = true;
while($news = mysql_fetch_assoc($result)) {
    if ($firstRow) { echo $news['comName']; }
    $firstRow = false;

    echo $news['newTitle'];
}

您还可以保留当前代码并mysql_data_seek(0)在先提取公司名称后使用重置光标。

附带说明:不要再使用mysql_*函数了!请改用PDO

于 2013-02-25T11:56:11.640 回答
0

将 fetch 操作移到循环的末尾:

$companyData = mysql_fetch_assoc($result);
$comName = $companyData['comName'];

echo "<a href='#' class='name'>$comName</a>";

    // you've already fetched a news item....

$news=$companyData;
do {
   $newTitle = $news['newTitle'];
   echo $newTitle;
} while ($news=mysql_fetch_assoc($result));
于 2013-02-25T12:41:30.260 回答
0

将所有内容放入while循环并尝试:

while($news = mysql_fetch_assoc($result)) {
// Get company name and display

$comName = $news ['comName'];

echo "<a href='#' class='name'>$comName</a>";

// Looping news

    // Display news posts
    $newTitle[] = $news['newTitle'];

    echo $newTitle;
}
于 2013-02-25T11:53:30.083 回答