Php mysql_在循环时获取_数组
我有一个while循环,其中包含另一个while循环。两个循环都在不同的mysql结果集上迭代。问题是,当外部while循环第二次调用内部while循环时,它不会运行。Mysql_fetch_行在经过迭代后是否会放弃自身 下面是代码的样子: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
$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。谢谢。