Php 如何在while之外放置查询,而在while中放置查询?
我应该在帖子正文中显示评论编号。但是帖子的主体是在while中,如果我在while页面中放置comments num query,那么会很重 我想做但不起作用的事情: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
$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;
}
}