mysql嵌套的php while循环在显示请求的结果之前返回先前的结果

yrefmtwq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(303)

我正在php中使用双while循环,以分组方式显示mysql数据库的结果。这是我的数据库结构的一个示例:
id姓名团队所在国家
1汉密尔顿梅赛德斯英国
双按钮迈凯轮英国
3阿隆索迈凯轮es
4佩雷斯迈凯轮mx
我希望它像这样分组显示:

ES  
Alonso  

MX  
Perez  

UK  
Button  
Hamilton

但是,我的嵌套循环没有比这更好的了:

ES  
Alonso

MX  
Alonso  
Perez  

UK  
Alonso  
Perez  
Button  
Hamilton

我的循环在某个地方失败了,或者我只是采取了错误的方法。我尝试了增量、未嵌套循环、重置变量、继续/中断,但我想不通。第一个循环是为每个分组打印一个表结构。这是我的代码示例:

<?php 

// count unique country entries 
$categories = $db->query("  
SELECT DISTINCT country
FROM cms_drivers
WHERE team = '$team'
ORDER BY country
");

while ($cat = $db->fetch_array($categories)) { // loops 3 times  
$custom = $db->query("
    SELECT id, name, team, country
    FROM cms_drivers
    WHERE team = '$team' AND country = '$cat[country]'
    ORDER BY name
");

while ($content = $db->fetch_array($custom)) {
    process('$drivers_bits .= "' . fetch_template('cms_drivers_bits') . '";');
}

process('$drivers .= "' . fetch_template('cms_drivers') . '";');

}

是我忽略了一些非常简单的事情,还是这只是一个错误的方法?
cms\u驱动程序\u bits模板:

<tr><td>$content[name]</td></tr>

cms\U驱动程序模板:

<table cellpadding="8" cellspacing="0" width="100%">  
<thead>  
<tr>  
<td class="header">  
<span><strong>$cat[country]</strong></span></td>  
</tr>  
</thead>  
<tbody>  
$drivers_bits  
</tbody>  
</table>
cu6pst1q

cu6pst1q1#

根据你得到的结果,看起来你只需要初始化一下 $drivers_bits 在内部循环之前添加一个空字符串。

$drivers_bits = '';
while ($content = $db->fetch_array($custom)) { ...
``` `$drivers_bits` 可能用在 `fetch_template('cms_drivers')` ,并且每次都要向其追加值,而不是将其重置为循环迭代的新值。

相关问题