我有一个包含另一个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,但结果仍然相同。
由于
答案 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()。