循环时mysql_fetch_array.它是如何工作的?

133*_*475 5 php mysql increment

我已经阅读了关于php.net上的功能,但仍然没有回答我的问题.我知道C的初学者数量,我刚开始使用php.通常在C中,如果你要做一个while循环,那么需要有一些条件来将循环推进到不再有效的程度,如下所示:

while (x >= 10)  
{ 
    printf("..."; 
    printf("x \n"; 
    x++; 
}
Run Code Online (Sandbox Code Playgroud)

但是在我用于pm消息系统的php脚本中,我有一个像这样的while循环:

while($row2 = mysql_fetch_array($query))
Run Code Online (Sandbox Code Playgroud)

其次是:

{ 
  echo "<table border=1>";
  echo "<tr><td>";
  echo "Message #: ";
  echo $row['id'];
  echo "</td></tr>";
  echo "<tr><td>";
  echo "To: ";
  echo $row['to'];
  echo "</td></tr>";
  echo "<tr><td>";
  echo "From: ";
  echo $row['from'];
  echo " ";
  echo "</td></tr>";
  echo "<tr><td>";
  echo "Message: ";
  echo $row['message'];
  echo "</td></tr>";
  echo "</br>";
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table border="0">
<tr><td colspan=2></td></tr>
<tr><td></td><td>
<input type="hidden" name="id" maxlength="32" value = "<?php echo $row['id']; ?>">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="delete" value="Delete PM # <?php echo $row['id']; ?>">
</td>
<td colspan="2" align="right">
<input type="submit" name="reply" value="Reply to <?php echo $row['from']; ?>">
</td></tr>
</table>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

这究竟是如何工作的,从C背景看起来几乎就像它会保持在同一个位置,每次我们通过循环时从相同的"$ query"打印出相同的"数组获取"'行'. ..

有没有办法可以写这个来让我更好地理解最新情况?喜欢说:

$i=0;
while ($row = ($i+mysql_fetch_array($query)) {
...
...
$i++;}
Run Code Online (Sandbox Code Playgroud)

我知道可能不会工作,但这个功能如何增加?有没有办法把它写在代码中实际可以看到某种增量的地方?

谢谢

Dav*_*lar 11

每次调用mysql_fetch_array它时都会从查询中提取下一行.该while循环保持返回true,而mysql_fetch_array仍有一些东西要分配给变量$row2.一旦它没有行,它就没有任何东西可以提供变量,并返回false.

ETA:关于你提到的最后一点,你可以在循环的每次迭代中有一个变量增量,就像在你的例子中一样,但这并不是完全必要的.您还可以通过在循环$var = mysql_num_rows($data)之前执行某些操作来查看已返回的行数while.