Php mysql_在循环时获取_数组

Php mysql_在循环时获取_数组,php,mysql,while-loop,Php,Mysql,While Loop,我有一个while循环,其中包含另一个while循环。两个循环都在不同的mysql结果集上迭代。问题是,当外部while循环第二次调用内部while循环时,它不会运行。Mysql_fetch_行在经过迭代后是否会放弃自身 下面是代码的样子: $counter = 0; while ($r = mysql_fetch_row($result)){ $col = ""; $val = ""; while($d = mysql_fetch

我有一个while循环,其中包含另一个while循环。两个循环都在不同的mysql结果集上迭代。问题是,当外部while循环第二次调用内部while循环时,它不会运行。Mysql_fetch_行在经过迭代后是否会放弃自身

下面是代码的样子:

$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_数组,但结果还是一样

谢谢


当您调用mysql\u fetch\u row$dictionary时,它会在该行中为您提供特定的列详细信息,并将其从$dictionary数组中删除

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

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

$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\u data\u seek。

在$dictionary结果资源中返回多少行?每次调用mysql_fetch*函数时,结果资源的内部指针都是高级的。如果您打算反复使用同一行,则需要使用mysql_data_seek倒带资源,但最好先将其所有行存储在一个数组中,然后使用该数组进行循环,而不是在循环结果时执行主逻辑,但是。。。还请显示创建这两个结果资源的两个查询。这些查询是否相互关联,从而可以组合成单个连接查询,从而消除许多复杂的循环逻辑?mysql\u data\u seek成功了。它不会存在于应用程序中,我只需要一些帮助来重新组织数据源,我正在使用php来帮助我做到这一点。所以mysql_data_seek就可以了。谢谢好啊你应该在下面贴出你自己的答案,说明你是如何解决的。还有一个标准的免责声明:旧的mysql_*函数已被弃用,不应用于新代码。如果可能的话,考虑切换到MySqLi或PDO。谢谢。