【发布时间】:2012-05-17 05:00:09
【问题描述】:
我已经阅读了关于 php.net 上的功能,但仍然没有回答我的问题。我知道 C 的初学者数量,我刚刚开始使用 php。通常在 C 中,如果您要执行 while 循环,则需要一些条件才能将循环推进到不再有效的点,如下所示:
while (x >= 10)
{
printf("...";
printf("x \n";
x++;
}
但是,在我用于 pm 消息系统的 php 脚本中,我有一个这样的 while 循环:
while($row2 = mysql_fetch_array($query))
后跟:
{
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 } ?>
这到底是如何工作的,从 C 背景来看,它似乎几乎会停留在同一个位置,每次我们经过循环......
有没有什么方法可以让我对发生的事情有更好的逻辑理解?就像说:
$i=0;
while ($row = ($i+mysql_fetch_array($query)) {
...
...
$i++;}
我知道这可能行不通,但这个函数如何自我增加?有没有办法在代码中实际显示某种增量的地方编写它?
谢谢
【问题讨论】:
-
我会阅读PHP documentation 以获得更好的理解。该函数基本上是在处理查询结果的资源句柄。如果没有更多结果要返回,则该函数将返回 FALSE,因此 while 循环的计算结果为 FALSE。
-
请停止使用古老的
mysql_*函数编写新代码。它们不再被维护,社区已经开始deprecation process。相反,您应该了解准备好的语句并使用PDO 或MySQLi。如果你想学习,here is a quite good PDO-related tutorial.