Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在while之外放置查询,而在while中放置查询?_Php_Mysql - Fatal编程技术网

Php 如何在while之外放置查询,而在while中放置查询?

Php 如何在while之外放置查询,而在while中放置查询?,php,mysql,Php,Mysql,我应该在帖子正文中显示评论编号。但是帖子的主体是在while中,如果我在while页面中放置comments num query,那么会很重 我想做但不起作用的事情: $comments_data = mysql_query("SELECT * FROM `comments` WHERE `blogid`='$bid' AND `postid`='$postid'") or die(mysql_error()); $coments_num = mysql_num_rows($comments_d

我应该在帖子正文中显示评论编号。但是帖子的主体是在while中,如果我在while页面中放置comments num query,那么会很重

我想做但不起作用的事情:

$comments_data = mysql_query("SELECT * FROM `comments` WHERE `blogid`='$bid' AND `postid`='$postid'") or die(mysql_error());
$coments_num = mysql_num_rows($comments_data);

if($post_query) {
    while($post_data = mysql_fetch_array($post_query)) {
        $postid = $post_data['id'];
        $post_temp = $post;
        $post_temp = str_replace('[post_comments]',$coments_num,$post_temp);
        $posts .= $post_temp;
    }
}
但是,如果我使用这样的方法,它将起作用:(但是有太多的查询!)


如果你只需要文章中的评论数量,而不需要评论内容。然后在联接查询中使用子句:

$post_query = "SELECT *, COUNT(comment.id) AS comment_num 
FROM post JOIN comment ON comment.post_id = post.id
GROUP BY post.id;"

if($post_query) {
  while($post_data = mysql_fetch_array($post_query)) {
    $postid = $post_data['id'];
    $comment_num = $post_data['comment_num'];
    $post_temp = $post;
    $posts .= $post_temp;
  }
}
检查上的

应该很少需要从循环中查询数据库:通常可以构造一个返回所有所需结果的查询,然后在该结果集上循环这几乎总能提高性能

不要用一个查询获取帖子,循环该结果集,用另一个查询获取每篇帖子的评论,而是将表连接在一起;如果不知道您的模式或看到
$post_query
的SQL,就不可能确定,但您可能希望这样:

选择*
使用(postid)从帖子左侧加入评论
其中blogid=“$bid”
邮购

然后循环结果,通过检查
postid
列来检测何时遇到新帖子。

我的问题就在这里!查询正在进行中!巫婆的意思是会有很多疑问!刚才我的回答是使用join,检查demonx,但我想你不明白!注释在另一个表中!这就是为什么我要使用连接,你看到演示了吗?在同一个查询中有两个表连接在一起@user1968224-为什么不能使用它?一些细节可能会帮助读者回答你的问题。
$post_query = "SELECT *, COUNT(comment.id) AS comment_num 
FROM post JOIN comment ON comment.post_id = post.id
GROUP BY post.id;"

if($post_query) {
  while($post_data = mysql_fetch_array($post_query)) {
    $postid = $post_data['id'];
    $comment_num = $post_data['comment_num'];
    $post_temp = $post;
    $posts .= $post_temp;
  }
}