2010-08-10 14 views
1

后,我有以下代码:(查询添加)失去的MySQL结果资源第一次使用

$weight_table = mysql_query ("SELECT * FROM ".$prefix."weight ORDER BY wlimit DESC");  
foreach ($weight as $area => $weight) { 
     echo $weight; 

     while ($weight_row = mysql_fetch_array($weight_table)) { 
      print_r($weight_row); 
      $limit = $weight_row['wlimit']; 
      if ($weight < $limit) { 
     $weight_level[$count] = $weight_row; 
      } 
     } 
    } 
    print_r($weight_level); 

其中$ weight_table是一个MySQL查询结果和$权重是一个数组。

我的问题是,$ weight_table似乎是在第一个while循环后过期,所以$ weight数组被有效地视为有一个项目。这是个问题!

任何人都可以提出为什么PHP会忘记第一次使用后的MySQL结果?

+0

我不是故意提出这个建议。我只是说没有得到正确的结果是一个问题。我只是假设某个地方出现了一个错误的国旗。 – YsoL8 2010-08-10 13:49:04

回答

2

通过for循环的第一次迭代,您将从mysql结果集中获取所有记录。你的inner while循环将运行直到所有的行都消失。你想要拉多少行?

此外,您正在重新使用$重量这是一个坏主意,可能会导致副作用。

foreach ($weight as $area => $wt) { 
    echo $wt; 

    while ($weight_row = mysql_fetch_array($weight_table)) { 
     print_r($weight_row); 
     $limit = $weight_row['wlimit']; 
     if ($wt < $limit) { 
     $weight_level[$count] = $weight_row; 
     } 
    } 

    mysql_data_seek($weight_table,0); 
} 
print_r($weight_level); 
+0

我想拉一切,一次为$ weight数组中的每个值。它似乎放弃了第一个价值之后。另外,如上所述改变了$ weight变量。 – YsoL8 2010-08-10 13:38:46

+0

有没有什么可以影响这个PHP的设置?我认为这是前一阵子。 – YsoL8 2010-08-10 13:40:13

+0

@ YsoL8:你的MySQL查询(和结果)很好? – fabrik 2010-08-10 13:49:33

1

您在foreach声明中覆盖$weight数组。 改为使用$area => $_weight

0
while ($weight_row = mysql_fetch_array($weight_table)) { 
    print_r($weight_row); 
    foreach ($weights as $area => $weight) { 
     echo $weight; 
     $limit = $weight_row['wlimit']; 
     if ($weight < $limit) { 
      $weight_level[$count] = $weight_row; 
     } 
    } 
} 
print_r($weight_level); 

使用$权重数组作为$权重

+0

切换while和foreach循环会扭曲$ weight_level的内容 – YsoL8 2010-08-10 13:46:48

0
foreach ($weight as $area => $weight) { 

你改写什么是你$height阵列,这就是为什么它是通过你的循环第一次运行后到期。尝试使用另一个变量名称作为其中一个。

相关问题