PHP变量问题

时间:2010-12-24 04:10:22

标签: php variables

这有效:

$customerBox = mysql_query("MY SQL STATEMENT HERE");  
$boxRow = mysql_fetch_array($customerBox);  

$customerBox = mysql_query("MY SQL STATEMENT AGAIN");
while($item = mysql_fetch_assoc($customerBox)) {
      foreach ($item as $columnName => $value) {
          if (empty($value)) {
               print $columnName;
          }
      }
}

这不是:

$customerBox = mysql_query("MY SQL STATEMENT HERE");  
$boxRow = mysql_fetch_array($customerBox);  

while($item = mysql_fetch_assoc($customerBox)) {
      foreach ($item as $columnName => $value) {
          if (empty($value)) {
               print $columnName;
          }
      }
}

为什么呢?我想我不明白变量是如何工作的。

3 个答案:

答案 0 :(得分:5)

问题是因为查询返回一行,所以没有什么可以提取。

mysql_fetch_*函数获取当前行,然后将行指针前进到下一行。如果当前行不存在,则返回false。因此,在第二次调用mysql_fetch_assoc时,指针位于第二行,但该行不存在,因此不执行循环。您有两种选择:

好:删除while循环,然后将foreach改为使用$boxRow代替:

foreach ($boxRow as $columnName => $value) {
    //...
}

好的:使用mysql_data_seek重绕MySQL的行指针:

$boxRow = mysql_fetch_array($customerBox);
mysql_data_seek($customerBox, 0);
while(...){

答案 1 :(得分:1)

这可能与mysql_fetch_array()有关,而不是变量。试着说:

mysql_data_seek ( $customerBox , 0 );
在while循环开始之前

。我很想看到结果。

答案 2 :(得分:0)

$ customerBox = mysql_query(“我的SQL语句在这里”);
$ boxRow = mysql_fetch_array($ customerBox);

while($ item = mysql_fetch_field($ customerBox)){       foreach($ item as $ columnName => $ value){           if(empty($ value)){                print $ columnName;           }       } }