Php 将foreach添加到数据库查询中

Php 将foreach添加到数据库查询中,php,mysql,Php,Mysql,我试图显示所有类别和计数,但一次只能显示一个 $query = $db->write_query(' SELECT c.*, COUNT(n.id) AS count FROM ' . TABLE_PREFIX . 'newscategories c LEFT JOIN ' . TABLE_PREFIX . 'news n ON FIND_IN_SET (c.cid, n.cid) GROUP BY c.cid ORDER BY count DESC

我试图显示所有类别和计数,但一次只能显示一个

$query = $db->write_query('
    SELECT c.*, COUNT(n.id) AS count
    FROM ' . TABLE_PREFIX . 'newscategories c
    LEFT JOIN ' . TABLE_PREFIX . 'news n ON FIND_IN_SET (c.cid, n.cid)
    GROUP BY c.cid
    ORDER BY count DESC
    ');    

while($fetch = $db->fetch_array($query))
{
    $name = $fetch['name'];
    $count = $fetch['count'];
}



echo $name;
这只印了一张。正在尝试将它们全部打印。

在循环内打印

while($fetch = $db->fetch_array($query))
{
    $name = $fetch['name'];
    $count = $fetch['count'];

    echo "$name: $count\n";
}

您只会回显一个值:

echo $name;
每次循环运行时,它都会覆盖该变量,因此只能打印最后一个值。听起来像是要在循环本身内部打印值:

while($fetch = $db->fetch_array($query))
{
    $name = $fetch['name'];
    $count = $fetch['count'];
    echo $name;
}

(注意:从这一点开始,您可能希望改进输出格式,减少不必要的代码等。)

您可以按照其他人的建议在循环中回显名称

while($fetch = $db->fetch_array($query))
{
    $name = $fetch['name'];
    $count = $fetch['count'];
    echo $name . " " . $count ."<br />";

}
while($fetch=$db->fetch\u数组($query))
{
$name=$fetch['name'];
$count=$fetch['count'];
echo$name.“$count.”
; }
或者将返回的数据保存在数组中,然后在数组中循环

$results = array()
while($fetch = $db->fetch_array($query))
{
    $results[] = array( 'name' => $fetch['name'],
                        'count' => $fetch['count']);
}

foreach ($results as $result){    
     echo $result['name']. " " . $result['count'] ."<br />";
}
$results=array()
while($fetch=$db->fetch\u数组($query))
{
$results[]=数组('name'=>$fetch['name'],
“count”=>$fetch['count']);
}
foreach($results as$result){
echo$result['name'].“”.$result['count'].“
”; }
谢谢。如果我想在回显10后再执行一些代码呢?就像我想列出10个类别,然后将其余的放在一个div中,我可以使用jQuery隐藏或显示。使用计数器,当它达到11时,再添加开始div标记。循环结束后,检查是否超过10,并添加结束标记->
$i=1;foreach($results as$result){if($i==11){echo';}echo$result['name']。“.$result['count']。”
;$i++;}if($i>10){echo';}