※ 引述《ioioiii (io)》之銘言:
: 小弟從資料庫裡拉出來的資料有兩筆分別是1和2兩個整數 也就是說$d1=2
: 以下是我的code
: <? $a1=mysql_query("SELECT level FROM vata2 WHERE save='1' and id='1' and
: level!='0'");
: $b1=mysql_fetch_array($a1);
: $g=0; $i=0;
: $d1=mysql_num_rows($a1);
: while($b1!=NULL){
: $g+=$b1[$i];
: $i++;
: $b1=mysql_fetch_array($a1);}
: echo $g;
: 我的想法是取得資料有兩筆所以在迴圈跑兩次 則第一次$g=1第二次$g=1+2=3
: 可是我echo出來$g卻是1
: 第一我不明白我的問題出在哪裡
: 第二如果要達成我的目的應該要怎麼改
: 麻煩善心人士高手們解答 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.40
請問您有先將$b1印出來看過資料嗎?
資料庫抓取多筆資料的迴圈是這樣子寫嗎?
基本教學大多會是
while($b1 = mysql_fetch_array($a1)){
//do something you want
}
這種型式....
另外您的迴圈是無窮迴圈,
不知道您有沒有發現?
因為$b1 = mysql_fetch_array($al);
會取得第一筆資料 => $b1 = 1
因此 $b1 != null 是永遠成立的。
此外您的程式變數命名建議換成有意義的命名,
往後看程式比較不會那麼辛苦。
題外話...
既然您使用了$i當計數器,
那算平均就不需要抓資料筆數,
除以 ($i+1) 就可以了。
還有debug的基本功就是印出變數來檢查且耐心的慢慢找,
希望對您有幫助。
<?php
$sql_query = " select `level`
from `vata2`
where `save` = '1' and
`id` = '1' and
`level` != '0' ";// sql語法
$rs = mysql_query($sql_query);// 查詢資料
$i = 0;// 計數器
$sum = 0;// 總合
$avg = 0;// 平均
while($data = mysql_fetch_array($rs)){ // 抓取資料
$sum += $data[$i];
$i++;
}
$avg = ($sum/($i+1));// 平均
?>