1
以下はPHPで実行される2つのMySqlクエリです。Foreachで空カウント前の結果を空の場合に使用
一見すると、彼らは私が望むものを達成します。これは、チーム内のユーザーの数を数え、次にLocationsの表示回数をカウントし、それらをグループ化して、変数countcountとして使用するための最大カウントを返します。
ただし、ユーザーが存在しないため、場所がない場合は、以前のループの結果が返されます。 PhpMyAdminでクエリを実行すると、結果は返されず/空のセットになります。
それは以前、その結果としての位置数をループ使用します。その空/ nullの場合、あなたはまた、何らかの理由で。見ることができるように私は「!=」あなたが見ることができるように(NULLIFを試みたが、場所ました。
/** 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;
}
私はそのアイデアが好き、私は仕事ができることhopefulyだったが、それは、私は怖いしません 。$ flagcount = 0を設定している場合、その直後に$ flagcount = $ result ['flagnum']を設定します。とにかくオーバーライドされませんか? – MikeXero
はい、しかし、ポイントは、クエリ内に結果がないために内部ループが起こらない場合、それを上書きしないことです。初期化しないと、次回のループ実行時に前のループの値が使用されます。 – TBowman
作品!私はあなたが外側のループを意味するのか分からなかった、私はそれを考えなかった。私のためにこれを働かせてくれてありがとう!私はループがヘッドスピンを見つける。 – MikeXero