使用mysql_fetch_array向前移动内部指针

时间:2011-11-20 05:26:47

标签: php mysql

我有一个类似于以下内容的表(第一行是列):

|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 $ row [$ i]回显while循环的输出,它会给我:bananas

从PHPmyadmin中进行选择可以正常工作

你能告诉我这里我做错了什么吗? 谢谢,

关于SystemError

1 个答案:

答案 0 :(得分:2)

为什么在while循环中递增$i。您的查询将返回两行,当您循环显示结果时,您每次都可以使用section访问$row[0]值。

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

这将打印bananaspeaches

在您的代码中,当您第二次进入while循环时,您尝试使用section检索$row[1]值(因为您的$i已增加到1),这将是null,因为您的查询结果只包含一列。