PHP while循环中没有条件?

PHP while循环中没有条件?,php,mysql,content-management-system,while-loop,conditional-statements,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());

因此,我正在使用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'];
   }
}
停止 你正在看的教程已经严重过时了。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO


至于具体问题,这一行

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

这就是条件
mysql\u fetch\u assoc()
如果有更多结果,则返回一个数组;如果没有结果,则返回
false
。如果返回
false
,则条件将计算为
false
,循环将中断。

基本上,您正在获取新行并将其分配给
$post
变量,其中包含:

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

返回值

返回与 获取的行,或者如果没有更多行,则为FALSE


因此,当
mysql\u fetch\u assoc
返回
false
时,它被分配给
$post
变量,然后在
中求值,同时
,然后循环停止。

如手册页中关于以下内容的说明:

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

表示第一个$post获得一个值。mysql_fetch_assoc在出现错误时返回false


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

它是PHP的一部分。赋值的结果就是被赋值的值。这样可以实现以下功能:

$x = $y = $z = 7;
7
分配给所有3个变量。因此,鉴于

while($row = mysql_result(...)) {
当没有更多数据可获取时,mysql_结果将返回行数据数组或布尔值false。该数组/布尔值已分配给$row。由于这个赋值有while()环绕,数组/布尔值传播到while()


如果返回一行数据,则它是一个数组,在while之前被视为布尔true,循环将继续。如果没有更多的数据,mysql\u fetch将返回一个布尔值false,该值被分配给$row,该false也是分配的结果,这意味着while()将获得false,循环将终止。

mysql\u*
函数已弃用[手动页面中的红色大框],因此应避免使用它们。
while($row = mysql_result(...)) {