作者ioioiii (io)
看板PHP
標題Re: [請益] 一個迴圈的問題
時間Wed Sep 1 14:40:55 2010
※ 引述《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
1F:推 clubflymf:印出資料請用VAR_DUMP 或 PRINT_R 09/01 15:03
2F:→ clubflymf:另外 您的寫法並不會讓 程式繼續取得下一筆資料 09/01 15:03
3F:→ clubflymf:還有 您新改的程式 跑出來的結果會是0 09/01 15:04
4F:→ clubflymf:以上是我幫您測試出來的結果 @@ 09/01 15:05
5F:→ clubflymf:我打錯字了 = = 真糟糕 = = 結果有出1.5 L打成1 = = 09/01 15:11
6F:→ ioioiii:@@ XDDDDD 09/01 15:13
7F:→ ioioiii:謝謝你喔!!! 09/01 15:17
8F:推 newyellow:while( $b1 = mysql_fetch_array($a1) ) 才正確 09/01 16:12
9F:→ newyellow:數字有成功的話...應該是巧合吧 09/01 16:12
10F:→ ioioiii:我不會從以前到現在都是巧合吧 09/01 18:35
11F:推 lausai:原PO的迴圈沒問題吧 頂多沒那麼乾淨 另外mysql_fetch_array 09/01 22:26
12F:→ lausai:遇到資料取完時回傳的是false 不是null 09/01 22:28
13F:推 newyellow:抱歉,我看錯了 fetch_array有寫在迴圈裡,是OK的 09/02 14:49
14F:→ ioioiii:你們一度害我好疑惑 XDDDDD 09/02 23:48