3

私はこのコードを持っています:

  $i=0;
      $start_date = date("Y/m/d");
      $end_date = date('Y/m/d', strtotime($start_date . " -7 days"));



      while($days7=mysql_fetch_assoc($q)): 
          $next_date = strtotime($i--." days", strtotime($start_date));
          $date = date("Y/m/d",$next_date); 
      #Let's get the latest click combined from the latest 7 days
          $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8") or die(mysql_error());              


      print mysql_num_rows($combined7);

      endwhile;  

取得している行数を確認する必要があります$combined7。現在、私は使用していますprint mysql_num_rows($combined7);が、出力するだけです: 1 1 1 1 1 (各行の数字「1」)

総数はどうやって数えればいいですか?

(PS $i は 0 に設定する必要があります)

4

4 に答える 4

1

元のクエリは次のとおりです。

          $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8")

COUNTコマンドを追加することにより、次のように考慮された行の数がカウントされSUMます。

SELECT SUM(value), COUNT(value) FROM...

次に、MYSQL_RESULT戻ってきたら、データをフェッチする必要があります。

$data = mysql_fetch_array($combined7);

これにより、次の配列が得られます。

Array(
    [0] = SUM
    [1] = COUNT
)

注意:mysql_*は廃止されました。mysqli_*代わりに または PDO を使用してください

于 2013-09-26T12:40:14.527 に答える
0

while の前に値 0 の変数を定義する必要があります。次に、while 内でこの変数の値を増やします。次に、while の終了後にこの変数を出力します。

      $start_date = date("Y/m/d");
      $end_date = date('Y/m/d', strtotime($start_date . " -7 days"));
      $sn = 0;
      while($days7=mysql_fetch_assoc($q)): 
          $next_date = strtotime($i--." days", strtotime($start_date));
          $date = date("Y/m/d",$next_date); 
      #Let's get the latest click combined from the latest 7 days
          $combined7=mysql_query("SELECT sum(value) FROM `xeon_stats_clicks` WHERE user='".$userdata['username']."' AND typ='4' AND data='$date' ORDER BY data DESC LIMIT 8") or die(mysql_error());              


      $sn += mysql_num_rows($combined7);

      endwhile;
      print $sn;
于 2013-09-26T12:23:17.527 に答える