PHP - 从连接中循环而不是循环

时间:2013-02-25 11:51:35

标签: php loops

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

谢谢!

$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 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分: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

答案 3 :(得分:0)

将获取操作移动到循环的结尾:

$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));