Re: [請益] 一個迴圈的問題

看板PHP作者 (io)時間13年前 (2010/09/01 14:40), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串4/4 (看更多)
※ 引述《clubflymf (出張嘴寫程式也不容易的)》之銘言: : 請問您有先將$b1印出來看過資料嗎? 有 我有印出來 $b1[0]是1 $b1[1]印不出來 : 資料庫抓取多筆資料的迴圈是這樣子寫嗎? : 基本教學大多會是 : while($b1 = mysql_fetch_array($a1)){ : //do something you want : } : 這種型式.... : 另外您的迴圈是無窮迴圈, : 不知道您有沒有發現? : 因為$b1 = mysql_fetch_array($al); : 會取得第一筆資料 => $b1 = 1 : 因此 $b1 != null 是永遠成立的。 應該不會是無窮迴圈吧 我在迴圈的最後一行不是有讓程式繼續取得下一筆資料嗎 根據我SQL語法設定的條件 如果只能取到兩筆資料 迴圈跑完兩次就停了不是嗎 : 此外您的程式變數命名建議換成有意義的命名, : 往後看程式比較不會那麼辛苦。 這是一直存在的壞習慣 我想可能寫的程式還不夠大支吧 一直沒嘗到苦果 還是謝謝你給的建議 : 題外話... : 既然您使用了$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));// 平均 : ?> 嗯嗯 沒錯 有用到$i的話 我的確多此一舉@@ : ※ 引述《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: 220.133.215.86

09/01 15:03, , 1F
印出資料請用VAR_DUMP 或 PRINT_R
09/01 15:03, 1F

09/01 15:03, , 2F
另外 您的寫法並不會讓 程式繼續取得下一筆資料
09/01 15:03, 2F

09/01 15:04, , 3F
還有 您新改的程式 跑出來的結果會是0
09/01 15:04, 3F

09/01 15:05, , 4F
以上是我幫您測試出來的結果 @@
09/01 15:05, 4F

09/01 15:11, , 5F
我打錯字了 = = 真糟糕 = = 結果有出1.5 L打成1 = =
09/01 15:11, 5F

09/01 15:13, , 6F
@@ XDDDDD
09/01 15:13, 6F

09/01 15:17, , 7F
謝謝你喔!!!
09/01 15:17, 7F

09/01 16:12, , 8F
while( $b1 = mysql_fetch_array($a1) ) 才正確
09/01 16:12, 8F

09/01 16:12, , 9F
數字有成功的話...應該是巧合吧
09/01 16:12, 9F

09/01 18:35, , 10F
我不會從以前到現在都是巧合吧
09/01 18:35, 10F

09/01 22:26, , 11F
原PO的迴圈沒問題吧 頂多沒那麼乾淨 另外mysql_fetch_array
09/01 22:26, 11F

09/01 22:28, , 12F
遇到資料取完時回傳的是false 不是null
09/01 22:28, 12F

09/02 14:49, , 13F
抱歉,我看錯了 fetch_array有寫在迴圈裡,是OK的
09/02 14:49, 13F

09/02 23:48, , 14F
你們一度害我好疑惑 XDDDDD
09/02 23:48, 14F
文章代碼(AID): #1CVVLuYR (PHP)
文章代碼(AID): #1CVVLuYR (PHP)