php while循环在$var

php while循环在$var,php,sql,Php,Sql,好吧,出于某种原因,这给了我一个错误,如图所示: 但是,如果我去掉“&&$cur_row

好吧,出于某种原因,这给了我一个错误,如图所示: 但是,如果我去掉“&&$cur_row<10”,它可以正常工作。为什么“&&$cur_row<10”会给我带来问题

  $sql_result = mysql_query("SELECT post, name, trip, Thread FROM (SELECT MIN(ID) AS min_id, MAX(ID) AS max_id, MAX(Date) AS max_date FROM test_posts GROUP BY Thread ) t_min_max INNER JOIN test_posts ON test_posts.ID = t_min_max.min_id WHERE Board=".$board." ORDER BY max_date DESC", $db);
                $num_rows = mysql_num_rows($sql_result);
                $cur_row = 0;
                while($row = mysql_fetch_row($sql_result) && $cur_row < 10)
                {
                    $sql_max_post_query = mysql_query("SELECT ID FROM test_posts WHERE Thread=".$row[3]."");
                    $post_num = mysql_num_rows($sql_max_post_query);
                    $post_num--;
                    $cur_row++;
                    echo''.$cur_row.'<br/>';
                    echo'<div class="postbox"><h4>'.$row[1].'['.$row[2].']</h4><hr />' .$row[0]. '<br /><hr />[<a href="http://prime.programming-designs.com/test_forum/viewthread.php?thread='.$row[3].'">Reply</a>] '.$post_num.' posts omitted.</div>';
                }

运算符优先级-赋值=的值低于&

您的代码行相当于此代码行,它有相当明显的缺陷:

while($row = (mysql_fetch_row($sql_result) && $cur_row < 10))


运算符优先级-赋值=的值低于&

您的代码行相当于此代码行,它有相当明显的缺陷:

while($row = (mysql_fetch_row($sql_result) && $cur_row < 10))


关系运算符和布尔运算符的优先级高于赋值运算符:

while(($row = mysql_fetch_row($sql_result)) && $cur_row < 10)

关系运算符和布尔运算符的优先级高于赋值运算符:

while(($row = mysql_fetch_row($sql_result)) && $cur_row < 10)

您的错误是一个MySQL错误,由您发送MySQL来告诉它要检索什么的信息引起。这是由这条线引起的:

$sql_max_post_query = mysql_query("SELECT ID FROM test_posts WHERE Thread=".$row[3]."");

有什么理由在查询行的末尾有两个标记吗?从那个请求中得到的任何东西都是不好的。不确定这与行计数有什么关系,但我会从错误开始的位置开始。

您的错误是一个MySQL错误,由您发送MySQL以告诉它要检索什么的信息引起。这是由这条线引起的:

$sql_max_post_query = mysql_query("SELECT ID FROM test_posts WHERE Thread=".$row[3]."");

有什么理由在查询行的末尾有两个标记吗?从那个请求中得到的任何东西都是不好的。不知道为什么这与行数有关,但是我会从错误开始的地方开始。

+1但是您没有提到的一个解决方案是将赋值移动到if语句的末尾:while$cur\u row<10&&$row=mysql\u fetch\u row$sql\u result+1但是您没有提到的一个解决方案是将赋值移动到if语句的末尾:while$cur\u row<10&&$row=mysql\获取\行$sql\结果