2011-11-20 53 views
0

我有一個表,它看起來像下面的(第一行是列):移動內部指針向前與mysql_fetch_array

|section | col1 | col2 | 
|----------------------| 
|bananas | val | val2 | 
|----------------------| 
|peaches | val | val2 | 

一些代碼來檢查,如果區間值與值的一個相匹配數組:

$sectionscope = Array('bananas', 'apples'); 

$sections = mysql_query("SELECT section FROM table WHERE col1=val AND col2=val2"); 

if (mysql_num_rows($sections)) { 

    $i = 0; 

    while ($row = mysql_fetch_array($sections)) { 

     if (in_array($row[$i], $sectionscope)) { 

      $section = $sectionscope[array_search($row[$i], $sectionscope)]; 

      $section_is_valid = 1; 

     } 

     $i++; 

    } 

} 

如果我使用echo $行[$ i]回波while循環的輸出,它給了我:bananas

做從PHPmyad選擇min正常工作

你能告訴我我在做什麼錯嗎? 謝謝,

關於SystemError

+0

爲什麼不首先查詢你想要的部分? – Brad

回答

2

你爲什麼在while循環遞增$i。您的查詢將返回兩行,當您遍歷結果時,可以使用$row[0]每次訪問section值。

while ($row = mysql_fetch_array($sections)) { 
echo $row[0];  
} 

這將打印bananaspeaches

在你的代碼,當你進入while循環第二次,你正試圖檢索使用$row[1]section值(因爲你$i已經增加到1),這將是空的,因爲你的查詢結果只包含一列。

+0

Woops,經典的邏輯錯誤。我一直在考慮將這些行作爲遍歷索引數字的迭代,而這些索引數字不是行。謝謝 – SystemError