2011-11-20 50 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