PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP-如何从循环内删除此查询?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我目前正在将论坛设计为个人项目.我遇到的重复出现的问题之一是循环中的数据库查询.到目前为止,我已经设法避免使用表连接或将数据缓存在数组中以备后用方法.

现在,尽管遇到了一种不确定的情况,即我不确定如何以可以轻松使用这两种方法的方式编写代码.但是,我仍然希望对此操作最多执行2个查询,而不是每组论坛1个,到目前为止,每页5个.因此,尽管5并不是一个很大的数字(尽管我添加的每个论坛组都会增加5),但这对我来说很重要,但我不想在循环中编写查询

我正在做的是显示论坛索引分组(例如,管理论坛,用户论坛等),然后在一个页面索引上显示该组中的每个论坛,这是因为两者的组合导致了我的问题.如果每页只有一个组,那么我将使用表联接并解决问题.但是,如果我@L_772_17@使用表联接,尽管我可以潜在地获取所有我需要的数据,但结果将是大量的,并且需要正确显示.

这是代码(为清楚起见,我删除了一些html)

<?PHP
    $sql= "SELEct * from forum_groups"; //query 1
    $result1 = $database->query($sql);
    while($group = MysqL_fetch_assoc($result1)) //first loop
      {?>
        <table class="threads"> 
        <tr>
              <td class="forumgroupheader"> <?PHP echo $group['group_name']; ?> </td>
            </tr>
            <tr> 
          <td class="forumgroupheader2"> <?PHP echo $group['group_desc']; ?> </td>
            </tr>
       </table>
       <table>
        <tr>
        <th class="thforum"> Forum Name</th>
        <th class="thforum"> Forum Decsription</th>
        <th class="thforum"> Last Post </th>
        <tr>
            <?PHP 

                $group_id = $group['id'];
                $sql = "SELECT forums.id, forums.forum_group_id, forums.forum_name, forums.forum_desc, forums.visible_rank, forums.locked, forums.lock_rank, forums.topics, forums.posts, forums.last_post, forums.last_post_id, users.username
FROM forums 
LEFT JOIN users on forums.last_post_id=users.id 
WHERE forum_group_id='{$group_iD}'";
                //query 2
                $result2 = $database->query($sql);
                while($forum = MysqL_fetch_assoc($result2))
                                            //second loop        
                    {?>

那我怎么能
 a)以从循环内部删除第二个查询的方式编写sql
 b)将结果合并到一个数组中
无论哪种方式,我都需要能够访问数据,以便可以正确格式化页面输出的格式,即在循环内.

解决方法:

我不认为您的方法如此糟糕,也不会改变它.但是,作为练习,如果选择论坛(与组一起加入)并按组ID进行排序,则可以在一个查询中完成所有操作.这样,您只需做出一个选择就可以开始循环.在循环中,您将检查group_id是否已更改.如果有,则开始一个新的组头.

如果这是一个超高流量站点,您还可以研究缓存,以便页面建立后将其写入磁盘.

这是一个如何检测组更改的示例:

$currentGroupId = 0;
$firstTime = true;
while ($row = MysqL_query_fetch_assoc($res)) {
    if ($row['group_id'] != $currentGroupId) {
        $currentGroupId = $row['group_id'];
        if (!$firstTimE) {
            // echo close group html
        } else {
            $firstTime = false;
        }
        // echo open group html
    }

    // do forum stuff
}
// echo close group html

大佬总结

以上是大佬教程为你收集整理的PHP-如何从循环内删除此查询?全部内容,希望文章能够帮你解决PHP-如何从循环内删除此查询?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: