所以我有一个关于 mysql/php 中过滤数据的问题。
所以我有 table 可以说
ID | fk1 | fk2
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 3
基本上,我在同一个表中出现了许多引用 fk2 的 fk1 ,当我在表中输出时,我得到的结果当然是
1 1
1 2
1 3
2 1
等等。这是正常的。我想做的基本上是输出一次 FK2 值(比如说 1),以及低于它的所有相应 FK1 值。有点像分组依据,但对于 FK2 的每次出现,我需要所有在其行中具有该 FK2 的 FK1。
我设法让它以某种方式工作,以便所有 FK1 打印出来并对应 FK2,但其他方式将不起作用:S
$FK1 = '';
while($row = mysql_fetch_array($result_set)){
if($FK1 != $row['fk1']){
if($FK1 != ''){
echo $printout;
}
$FK1 = $row['fk1'];
$printout = "<tr class='success'><td>" . "<strong>" . $row['fk1']. "</td></tr>";
}
$printout = $printout .'<td class="warning"> '.$row['fk2']. '</td></tr>';
}
echo $printout ;
知道如何使用一些智能循环来做到这一点,而不是在基础上使用多个查询吗? 谢谢
最佳答案
对于打印查询的循环的每次迭代,您可以检查前一次迭代是否打印了相同的内容,并且(如果是)跳过打印或如果没有则打印当前的内容。
我希望我理解了这个问题并且我的答案足够清楚。
类似这样的事情:
$cFk1 = "";
foreach($query_result as $cVal){
if($cVal != cFk1){
print $cVal;
}
$cFk1 = $cVal;
}
关于php - 在 php/mysql 中对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25370047/