Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从联接同时循环和不循环_Php_Loops - Fatal编程技术网

PHP-从联接同时循环和不循环

PHP-从联接同时循环和不循环,php,loops,Php,Loops,我试图显示一个公司表中的公司名称,然后循环显示另一个表中的新闻。这两张桌子是连在一起的。这意味着:我只想从联接中的一个表中选择一行,然后从联接中的另一个表中循环出数据。这可能吗?下面的代码只显示我循环中新闻表中三分之二的帖子 谢谢 $sql = "SELECT newID, newTitle, newSummary, newDate, comID, comName, comImageThumb FROM

我试图显示一个公司表中的公司名称,然后循环显示另一个表中的新闻。这两张桌子是连在一起的。这意味着:我只想从联接中的一个表中选择一行,然后从联接中的另一个表中循环出数据。这可能吗?下面的代码只显示我循环中新闻表中三分之二的帖子

谢谢

$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;
}
$sql=“选择
newID,newTitle,newSummary,newDate,
comID,comName,comImageThumb
从…起
tblNews a右键加入TBL公司b
在a.id=b.comID上
按newDate DESC订购”;
//获取公司名称和显示
$companyData=mysql\u fetch\u assoc($result);
$comName=$companyData['comName'];
回声“;
//循环新闻
而($news=mysql\u fetch\u assoc($result)){
//显示新闻帖子
$newTitle=$news['newTitle'];
echo$newTitle;
}

将所有内容放入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;
}
while($news=mysql\u fetch\u assoc($result)){
//获取公司名称和显示
$comName=$news['comName'];
回声“;
//循环新闻
//显示新闻帖子
$newTitle[]=$news['newTitle'];
echo$newTitle;
}

您应该查看mysql
GROUP_CONCAT
了解更多详细信息。

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

// 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\u data\u seek(0)
重置光标


另一方面:不要再使用
mysql.*
函数了!改为使用。

将提取操作移动到循环的末尾:

$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));
$companyData=mysql\u fetch\u assoc($result);
$comName=$companyData['comName'];
回声“;
//您已经获取了一条新闻。。。。
$news=$companyData;
做{
$newTitle=$news['newTitle'];
echo$newTitle;
}而($news=mysql_fetch_assoc($result));

非主题,但很重要:请注意,
mysql\u xxx()
函数已弃用,不再维护。强烈建议您尽快切换到
mysqli
PDO
libs。不幸的是,这不起作用,我仍然只能从新闻表中获得三分之二的帖子……您确定在
while
中有
echo
作为新闻标题吗?我在上面的代码中阐明了这一点。是:/I我跳过了联接并将两个表分开,但感谢您的建议!