循环时mysql_fetch_array

时间:2014-06-08 01:33:50

标签: php mysql while-loop

我有一个包含另一个while循环的while循环。两个循环都在不同的mysql结果集上进行迭代。问题是外部while循环第二次调用内部while循环时它不会运行。 Mysql_fetch_row在迭代后会丢弃吗?

代码如下所示:

$counter = 0;
while ($r = mysql_fetch_row($result)){
    $col = "";
    $val = "";
    while($d = mysql_fetch_row($dictionary)){
        $key = $d[0];
        for($i= 0; $i< count($tableColumNames); $i++){
            if($tableColumNames[$i] == $key){
                $col .= "`".$d[1]."` ,";
                $val .= "`".$r[$i]."` ,";
                /* echo $tableColumNames[$i]." table ColumnName <br>";
                echo $d[1]." key<br>"; */               
            }           
        }
        echo $key."round".$counter."<br>";
    }
    var_dump ($col);
    var_dump ($val);
    $counter++;
    echo $counter;
}

以下是输出结果:您可以看到$ result包含四条记录,输出显示循环正常工作。但是,$ dictionary结果集上的内部循环不会在第二次$ result被迭代时运行。有什么想法吗?我也尝试使用mysql_fetch_array,但结果仍然相同。

由于

enter image description here

1 个答案:

答案 0 :(得分:0)

什么时候调用mysql_fetch_row($ dictionary)它会在行中为您提供特定的列详细信息,并将其从$ dictionary数组中删除。

因此没有可供下次使用的元素。

而不是在外面声明$ dictionary而不是在while循环中声明它。它会解决你的问题。

$counter = 0;
while ($r = mysql_fetch_row($result)){
$col = "";
$val = "";
$dictionary=("Select * from database");//your own logic
while($d = mysql_fetch_row($dictionary)){
    $key = $d[0];
    for($i= 0; $i< count($tableColumNames); $i++){
        if($tableColumNames[$i] == $key){
            $col .= "`".$d[1]."` ,";
            $val .= "`".$r[$i]."` ,";
            /* echo $tableColumNames[$i]." table ColumnName <br>";
            echo $d[1]." key<br>"; */               
        }           
    }
    echo $key."round".$counter."<br>";
}
var_dump ($col);
var_dump ($val);
$counter++;
echo $counter;
}

或者您可以使用 mysql_data_seek()