在循环中PHP没有条件?

时间:2012-11-16 17:41:10

标签: php mysql content-management-system while-loop conditional-statements

所以,我正在使用PHP构建我的第一个超级基本CMS。我不想简单地复制我正在观看的教程中的代码,但我真的很了解它。困扰我的一件事是使用while循环来获取帖子。在下面的代码中,我无法看到圆括号内的语句如何构成条件。在我看来它所做的就是为变量$ post分配一个数组。我想,你怎么能循环不是条件的东西是我的问题。谢谢!

function get_posts () {
   $query = mysql_query("SELECT * FROM posts") or die(mysql_error());

   while ($post = mysql_fetch_assoc($query)) {
      echo $post['Content'];
   }
}

5 个答案:

答案 0 :(得分:7)

STOP!

您正在观看的教程已经过时了! Please, don't use mysql_* functions in new code。它们不再被维护,deprecation process已经开始了。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial


至于具体问题,这一行

while ($post = mysql_fetch_assoc($query)) {

是条件。如果有更多结果,mysql_fetch_assoc()会返回一个数组;如果没有结果,则false会返回false。如果它返回false,则条件将评估为{{1}}并且循环将中断。

答案 1 :(得分:1)

基本上你要获取新行并将其分配给$post变量:

while ($post = mysql_fetch_assoc($query))

mysql_fetch_assoc

  

返回值

     

返回与。对应的字符串关联数组   获取行,如果没有更多行,则 FALSE

mysql_fetch_assoc返回false时,它会被分配到$post变量,然后在while内进行评估,然后循环停止。

答案 2 :(得分:1)

正如mysql_fetch_assoc手册页中所述:

  

返回值:返回字符串的关联数组   对应于获取的行,如果没有更多行,则为FALSE。

答案 3 :(得分:0)

while ($post = mysql_fetch_assoc($query))

表示第一个$ post获取一个值。当出现错误时,mysql_fetch_assoc返回false。

while循环检查$ post是否为false,它可以是true,整数,数组等。

答案 4 :(得分:0)

这是PHP的一部分。赋值的结果是赋值。这允许像:

$x = $y = $z = 7;

7分配给所有3个变量。因此,给定

while($row = mysql_result(...)) {
当没有更多要提取的数据时,mysp_result将返回一个行数据数组或一个布尔值false。该数组/布尔值分配给$ row。由于这个赋值包含while(),所以array / boolean传播到while()。

如果你得到一行数据,那么这是一个被while处理为布尔值的数组,并且循环继续。如果没有更多数据,mysql_fetch返回一个布尔值false,它被赋值给$ row,而false也是赋值的结果,这意味着while()得到一个FALSE,并且循环终止。