0

このスクリプトがこれを行っている理由を理解できないようです。そのため、問題が何であるかを教えてくれる、より経験豊富で優れた目を持った人が必要です。オンラインの他の場所では何も見つからないようですが、検索用語の表現が間違っている可能性があります。この While/Foreach ループのセットは、同じ行を 4 回吐き出すことを除けば問題なく動作します。

   $squery = "SELECT username, name FROM name_records";
   $sresult = mysql_query($squery);
   while($srow = mysql_fetch_array($sresult)) {
        foreach ($srow as $scell) {
        $username = $srow['username'];
             $name = $srow['name'];
             $queryi = "SELECT SUM(totalseconds) FROM gradpoint WHERE username = '$username'";
             $resulti = mysql_query($queryi) or die(mysql_error());
             while($rowi = mysql_fetch_array($resulti)){
                  $total = $rowi['SUM(totalseconds)'];
                  $minutes = $total / 60;
                  echo $name ." has worked for " .$minutes ." minutes today! Good jorb!<p/>";
             }
         }
 }

name_records テーブルの最初の 2 つのエントリが "Bob Ross, br01234" と "Alfred Hitchcock, ah43210" の場合、上記のコードは次のように出力します。

 Bob Ross has worked for 342 minutes today! Good jorb!
 Bob Ross has worked for 342 minutes today! Good jorb!
 Bob Ross has worked for 342 minutes today! Good jorb!
 Bob Ross has worked for 342 minutes today! Good jorb!
 Alfred Hitchcock has worked for 187 minutes today! Good jorb!
 Alfred Hitchcock has worked for 187 minutes today! Good jorb!
 Alfred Hitchcock has worked for 187 minutes today! Good jorb!
 Alfred Hitchcock has worked for 187 minutes today! Good jorb!

なぜ4つ?どうして?!私はそれを修正するためにいくつかの異なる方法を試しました(申し訳ありませんが、今何を試したか覚えていません)が、役に立ちませんでした.

4

5 に答える 5

0

データベースから必要なものを直接クエリし、単純な結果を繰り返すことで、コードを単純化できます。

SELECT name, username, sum(gradpoint.totalseconds) as total FROM name_records, gradpoint where name_records = gradpoint.username group by gradpoint.username
于 2013-02-20T20:09:57.340 に答える
0

ある種の参加とグループ化であなたが望むものを達成することができます。のようなもの:

   $squery = "SELECT nr.username, nr.name, SUM(g.totalseconds) as totsec FROM name_records nr, gradpoint g
WHERE g.username=nr.username
GROUP BY nr.username,nr.name";

うまくいくかもしれない

于 2013-02-20T20:10:17.087 に答える
0

問題は、列を反復処理していることです。foreachループを削除すると、問題がないはずです。

于 2013-02-20T20:06:48.897 に答える
0

問題はforeachから来たと思います:

    //foreach ($srow as $scell) {
    $username = $srow['username'];
         $name = $srow['name'];
         $queryi = "SELECT SUM(totalseconds) FROM gradpoint WHERE username = '$username'";
         $resulti = mysql_query($queryi) or die(mysql_error());
         while($rowi = mysql_fetch_array($resulti)){
              $total = $rowi['SUM(totalseconds)'];
              $minutes = $total / 60;
              echo $name ." has worked for " .$minutes ." minutes today! Good jorb!<p/>";
         }
     //}
于 2013-02-20T20:07:05.777 に答える
0
$query = "
SELECT u.*, (SUM(g.totalseconds) / 60) as sum
FROM name_records u
JOIN gradpoint g
ON  u.username = g.username
GROUP BY u.username;
";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
    echo $row['name'] . " has worked for " . $row['sum'] . " minutes today! Good jorb!<br/>";
}

60 による除算も含めます。

于 2013-02-20T20:18:58.633 に答える