文章页面 article.php?id=5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $id = $_GET['id']; // 查询文章内容 $article_sql = "SELECT * FROM `article` WHERE `id` = {$id}"; // 略 // 查询上一篇文章的ID $prev_id_sql = "SELECT `id` FROM `article` WHERE `id` < {$id} limit 1"; // 略 echo "<a href=\"article.php?id={$prev_id}\">上一篇</a>"; // 查询下一篇文章的ID $next_id_sql = "SELECT `id` FROM `article` WHERE `id` > {$id} limit 1"; // 略 echo "<a href=\"article.php?id={$next_id}\">下一篇</a>"; ?> |
这样需要3次查询,但实际上我们不需要知道上一篇/下一篇文章的具体ID是多少
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $id = $_GET['id']; $go = $_GET['go']; switch($go) { case 'prev': $symbol = '>'; break; case 'next': $symbol = '<'; break; default: $symbol = '='; break; } // 查询文章内容 $article_sql = "SELECT * FROM `article` WHERE `id` {$symbol} {$id} LIMIT 1"; // 略 echo "<a href=\"article.php?id={$id}&go=prev\">上一篇</a>"; echo "<a href=\"article.php?id={$id}&go=next\">下一篇</a>"; ?> |
减少了两次查询,MYSQL会感谢你大爷的
hoho.也可以不预先初始化上下的id么.
如果可以就用js触发呗.就是点上或下的时候调js取当前id减或加.
哦.不过如果上一篇id被删了就不好处理了.还是应该取数据库里读上一篇id是几.
不过,还是可以写个js,点了再去查,似乎可以节省开支哦.
说真的,我真没看明白你的意思……
后来和论坛的人讨论了下,这个方法虽然减少了数据库查询,但还是有缺陷
不能处理到顶了(EOF或者BOF)的情况
不利于SEO
如果需要输出上/下篇的标题的话就不行了
……
这也就是个思路而已
另外,JS是靠不住滴!