下面是在 PHP 中执行的两个 MySql 查询。
乍一看,他们实现了我想要的。它将计算团队中有多少用户,然后计算位置出现的频率,然后将它们分组,只返回最高计数供我用作变量 $flagcount。
但是,如果没有用户,因此也没有位置,它将返回前一个循环的结果。当我在 PhpMyAdmin 中运行查询时,它不返回任何结果/空集。
我试过 NULLIF (如你所见,以及 location !='' 你也可以看到。无论出于何种原因,如果它的 Empty/Null 它将使用之前的循环位置计数作为结果。
/** other table select --working loop-- */
/** irrelevant code here */
foreach( $rows as $result ) {
$result = $conn->prepare("SELECT location, COUNT(NULLIF(TRIM(location), '')) as flagnum FROM users WHERE team_name='$teamname' AND location !='' GROUP BY location ORDER BY flagnum DESC LIMIT 1");
$result->execute();
$rows = $result->fetchAll();
foreach( $rows as $result ):
$flagmajority = $result['location'];
$flagcount = $result['flagnum'];
endforeach;
$result = $conn->prepare("SELECT team_name, COUNT(NULLIF(TRIM(team_name), '')) as playnum FROM users WHERE team_name='$teamname' AND team_name !='' GROUP BY team_name ORDER BY playnum DESC LIMIT 1");
$result->execute();
$rows = $result->fetchAll();
foreach( $rows as $result ):
$playercount = $result['playnum'];
endforeach;
$flagpercent = ($flagcount/$playercount) * 100;
$roundedpercent = round($flagpercent);
echo $flagcount;
}
尝试在循环内初始化 $flagcount。
像这样:
foreach( $rows as $result ) {
$flagcount = 0;
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句