PHP变量问题

Kyl*_*isi 0 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;
          }
      }
}
Run Code Online (Sandbox Code Playgroud)

这不是:

$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;
          }
      }
}
Run Code Online (Sandbox Code Playgroud)

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

irc*_*ell 5

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

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

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

foreach ($boxRow as $columnName => $value) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

好的:使用mysql_data_seek以下方法重绕MySQL的行指针:

$boxRow = mysql_fetch_array($customerBox);
mysql_data_seek($customerBox, 0);
while(...){
Run Code Online (Sandbox Code Playgroud)