本文主要介绍了php实现上一篇文章和下一篇文章的方法,并结合实例总结分析了PHP获取上一篇文章和下一篇文章的SQL操作的相关查询技巧。有需要的朋友可以参考以下。
本文结合实例分析了PHP实现上一篇文章和下一篇文章的方法。分享给你,供你参考,如下:
Php实现上一篇和下一篇帖子。这主要是通过sql根据当前id进行判断然后过滤掉当前ID之前或之后的数据。就这么简单。让我们来看看细节。
实现网站文章中上一条和下一条sql语句的编写。
当前文章的id是$article_id,当前文章对应类别的id是$cat_id,所以前一篇文章应该是:
复制代码如下:select max(article _ id)from article其中article _ id $ article _ id,cat _ id=$ cat _ id
在执行这个sql语句之后,您得到$max_id,然后
复制代码如下:select article _ id,title from article其中article _ id=$ max _ id
为了简化它,把它变成一个子查询:
复制代码如下:select article _ id,title from article where article _ id=(select max(article _ id)from article where article _ id $ article _ id and cat _ id=$ cat _ id);
下一个是,代码如下:
复制代码如下:select min(article _ id)from article其中article _ id $ article _ id,cat _ id=$ cat _ id
在执行这个sql语句之后,您得到$min_id,然后:
复制代码如下:select article _ id,title from article其中article _ id=$ min _ id
为了简化它,把它变成一个子查询:
复制代码如下:select article _ id,title from article where article _ id=(select min(article _ id)from article where article _ id $ article _ id and cat _ id=$ cat _ id);
最后,很多朋友喜欢用下面这种说法。
在前一篇文章中,代码如下:
从id10限制为0,1的表中选择id;
这个当然没问题,但是性能感觉不太好。
sql语句优化:
您可以使用union all在一个语句中获得3行数据,但前提是三个查询的字段相同。查询结果第一行是上一篇文章,第二行是当前文章,第三行是下一篇文章。代码如下:
复制代码如下:(从表中选择id,其中id 10 order by id ASC limit 1)union all(从表中选择id,其中id=10) union all(从表中选择id,其中id 10 order by id desc limit 1);
现在让我们来看一些例子,在cms,phpcms实现的前一个和下一个。
获取当前浏览的文章id:
$id=isset($_GET[id]) 0?intval($ _ GET[ id ]):“”;
下一篇文章:
$query=mysql_query(SELECT id,title FROM article WHERE id $ id ORDER BY id ASC LIMIT 1 );
$ next=MySQL _ fetch _ array($ query);
前一篇文章:
$query=mysql_query(SELECT id,title FROM article WHERE id $ id ORDER BY id desc限制1 );
$ prev=MySQL _ fetch _ array($ query);
更多对PHP相关内容感兴趣的读者,请参考我们的专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》和《php常见数据库操作技巧汇总》。
希望这篇文章对大家的PHP编程有所帮助。