首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php while循环在$var < 10语句上抛出错误

php while循环在$var < 10语句上抛出错误
EN

Stack Overflow用户
提问于 2010-03-13 01:57:57
回答 3查看 150关注 0票数 1

好的,由于某些原因,这给了我一个错误,就像这里看到的:http://prime.programming-designs.com/test_forum/viewboard.php?board=0但是,如果我去掉'&& $cur_row < 10‘,它工作得很好。为什么'&& $cur_row < 10‘会给我带来问题?

代码语言:javascript
运行
复制
  $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>';
                }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-13 02:03:17

运算符优先级--赋值(=)的precedence&&低。

您的代码行等同于下面这一行(它有相当明显的缺陷):

代码语言:javascript
运行
复制
while($row = (mysql_fetch_row($sql_result) && $cur_row < 10))

您可以通过使用and运算符而不是&&或使用括号来解决此问题。

代码语言:javascript
运行
复制
while($row = mysql_fetch_row($sql_result) and $cur_row < 10)

代码语言:javascript
运行
复制
while(($row = mysql_fetch_row($sql_result)) && $cur_row < 10)
票数 7
EN

Stack Overflow用户

发布于 2010-03-13 02:04:28

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

代码语言:javascript
运行
复制
while(($row = mysql_fetch_row($sql_result)) && $cur_row < 10)
票数 2
EN

Stack Overflow用户

发布于 2010-03-13 02:05:01

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

代码语言:javascript
运行
复制
$sql_max_post_query = mysql_query("SELECT ID FROM test_posts WHERE Thread=".$row[3]."");

为什么在该查询行的末尾有两个"“标记?无论从该请求返回的是什么,都是错误的。不知道为什么这会与行数有关,但我会从错误开始的地方开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2434750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档