2010-08-10 15 views
1

後,我有以下代碼:(查詢添加)失去的MySQL結果資源第一次使用

$weight_table = mysql_query ("SELECT * FROM ".$prefix."weight ORDER BY wlimit DESC");  
foreach ($weight as $area => $weight) { 
     echo $weight; 

     while ($weight_row = mysql_fetch_array($weight_table)) { 
      print_r($weight_row); 
      $limit = $weight_row['wlimit']; 
      if ($weight < $limit) { 
     $weight_level[$count] = $weight_row; 
      } 
     } 
    } 
    print_r($weight_level); 

其中$ weight_table是一個MySQL查詢結果和$權重是一個數組。

我的問題是,$ weight_table似乎是在第一個while循環後過期,所以$ weight數組被有效地視爲有一個項目。這是個問題!

任何人都可以提出爲什麼PHP會忘記第一次使用後的MySQL結果?

+0

我不是故意提出這個建議。我只是說沒有得到正確的結果是一個問題。我只是假設某個地方出現了一個錯誤的國旗。 – YsoL8 2010-08-10 13:49:04

回答

2

通過for循環的第一次迭代,您將從mysql結果集中獲取所有記錄。你的inner while循環將運行直到所有的行都消失。你想要拉多少行?

此外,您正在重新使用$重量這是一個壞主意,可能會導致副作用。

foreach ($weight as $area => $wt) { 
    echo $wt; 

    while ($weight_row = mysql_fetch_array($weight_table)) { 
     print_r($weight_row); 
     $limit = $weight_row['wlimit']; 
     if ($wt < $limit) { 
     $weight_level[$count] = $weight_row; 
     } 
    } 

    mysql_data_seek($weight_table,0); 
} 
print_r($weight_level); 
+0

我想拉一切,一次爲$ weight數組中的每個值。它似乎放棄了第一個價值之後。另外,如上所述改變了$ weight變量。 – YsoL8 2010-08-10 13:38:46

+0

有沒有什麼可以影響這個PHP的設置?我認爲這是前一陣子。 – YsoL8 2010-08-10 13:40:13

+0

@ YsoL8:你的MySQL查詢(和結果)很好? – fabrik 2010-08-10 13:49:33

1

您在foreach聲明中覆蓋$weight數組。 改爲使用$area => $_weight

0
while ($weight_row = mysql_fetch_array($weight_table)) { 
    print_r($weight_row); 
    foreach ($weights as $area => $weight) { 
     echo $weight; 
     $limit = $weight_row['wlimit']; 
     if ($weight < $limit) { 
      $weight_level[$count] = $weight_row; 
     } 
    } 
} 
print_r($weight_level); 

使用$權重數組作爲$權重

+0

切換while和foreach循環會扭曲$ weight_level的內容 – YsoL8 2010-08-10 13:46:48

0
foreach ($weight as $area => $weight) { 

你改寫什麼是你$height陣列,這就是爲什麼它是通過你的循環第一次運行後到期。嘗試使用另一個變量名稱作爲其中一個。

相關問題