加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 我必须在A-Z的目录列表页面组中进行26次mysql查询吗?

发布时间:2020-12-13 22:09:10 所属栏目:PHP教程 来源:网络整理
导读:我想为我的网站制作一个目录列表页面.该页面显示了我的所有网站文章.这些文章的标题是第一封信. 我必须运行26次mysql查询之类的 mysql query like "SELECT * FROM articles Where title like 'a%'"mysql query like "SELECT * FROM articles Where title lik
我想为我的网站制作一个目录列表页面.该页面显示了我的所有网站文章.这些文章的标题是第一封信.

我必须运行26次mysql查询之类的

mysql query like "SELECT * FROM articles Where title like 'a%'"
mysql query like "SELECT * FROM articles Where title like 'b%'"
mysql query like "SELECT * FROM articles Where title like 'c%'"
...
mysql query like "SELECT * FROM articles Where title like 'z%'"

我的html输出是:

<div class="content">
   <p>A</p>
   <a href="somelink">Anhui</a>
   <a href="somelink">Aomen</a>
</div>
<div class="content">
   <p>B</p>
   <a href="somelink">Beijing</a>
</div>
<div class="content">
   <p>C</p>
   <a href="somelink">Chongqing</a>
</div>
...
<div class="content">
   <p>Z</p>
   <a href="somelink">Zhejiang</a>
</div>

那么有什么好的建议我会做更少的mysql查询并得到相同的结果?谢谢.

解决方法

不.制作单个查询,并按字母顺序排序,如下所示:

SELECT * FROM articles ORDER BY title ASC

然后,当您循环浏览它们以显示它们时,请跟踪您显示的上一篇文章.如果当前文章的第一个字母与最后一个字母不同,请将您的分隔.

$prevFirstLetter = '';
while($data = nextResult()) {
    $firstLetter = substr($data['title'],1);
    if ($firstLetter != $prevFirstLetter)
        echo "<h1>$firstLetter</h1>";
    echo "{$data['title']}<br>";
    $prevFirstLetter = $firstLetter;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读