2013-09-26 46 views
1

我有這段代碼總NUM行:PHP - 計數的內部,而循環

$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')

如何計算總數?

(P.S. $我必須被設置爲0)

+1

'$ i = 0; while($ days7 = mysql_fetch_assoc($ q)):$ i ++;'? – Phorce

+3

注意:請勿*使用'mysql _ \ *',因爲它已被棄用。改用'mysqli _ \ *'或PDO。此外,請查看[Bobby Tables](http://bobby-tables.com/) – UnholyRanger

+0

你不會因爲獲得'SUM'而只得到一行嗎?所以你不想爲語句添加一個COUNT,然後檢查返回的第二列是否爲count? – UnholyRanger

回答

11

簡單:

$counter = 0; 
while(..) { 
     $counter++; // or $counter = $counter + 1; 
} 

echo $counter; 

限定外循環中的變量。

0

我沒有得到你的問題正確的..但我認爲你要計算總更新的行

$sum=0; 
while(){ 
$sum += mysql_num_rows($combined7); //here it will add total upadted row in $sum... 
print $sum; // if you want to print every time total 
} 
print $sum; // if you want to print only one time total 
+1

'打印$總和;'應該是'while'循環 – bansi

0

您在之前應該定義值爲0的變量。那麼你在這個時間內增加了這個變量的值。然後在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; 
+0

外「試試這個」從來都不是「答案」。你爲什麼不解釋你改變了什麼,爲什麼。 – UnholyRanger

+0

@UnholyRanger我更新了我的答案。對不起,我的英語不好。感謝您的提及。 –

+0

@SalaUddin刪除不需要的'$ i'。 – Phorce

0

這裏是原始查詢:

  $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代替