php while while循环抛出$ var< 10声明

时间:2010-03-12 17:57:57

标签: php sql

好的,所以出于某种原因,这会给我一个错误,如下所示:http://prime.programming-designs.com/test_forum/viewboard.php?board=0 但是,如果我带走'&& $ 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>';
                }

3 个答案:

答案 0 :(得分:7)

运算符优先级 - 分配(=)的precedence低于&&

您的代码行等同于此代码(显然存在明显缺陷):

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

您可以使用and运算符代替&&或使用括号来解决此问题。

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

您的错误是MySQL错误,由您发送MySQL的信息告诉它要检索的内容。这是由这条线引起的:

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

是否有任何理由在该查询行的末尾有两个“”标记?无论从该请求回来的是什么都是糟糕的。不知道为什么这会与行计数有关,但我会从错误开始的地方开始。