把sql语句查询到的结果暂时保存
搜索关键字,并把搜索到的结果分页 , 怎么做不会出现问题 ?
我用的sql语句是这样的,$sql = "SELECT FROM ( SELECT FROM {$my_mysql_dbname}.{$table} WHERE title like '%{$search_text}%' ) AS result ORDER BY id DESC LIMIT ".( ($page_now-1)*$page_size ).",".$page_size ;
因为每次都要重新查询整个数据表,当表中数据个数突然变化的时候,分页就会出错(重复出现或者其他问题) ,我想的是只有第一次查询需要查询整个表,以后就不再进行查询,直接从第一次查询的结果中选取 , 不知道这样应该这么做 ? 或者是用别的方法 ,求教 , 谢谢大家了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用
memcache
加缓存可以解决你想要的暂时保存哈如果要直接从第一次查询结果中选取,可以选择把第一次查询的数据以
JSON
格式(或别的格式)保存到文本文件中,“非第一次查询”情况下的数据调用就直接读取该文本文件做相应的数据处理,等到下一次的“第一次查询”再从数据表中读取文件,并将读取到到数据更新到这一文本文件中。个人想法,不知道是否符合题主要求。
很简单啊,所有数据一次输出到前端,让前端去分页,每次下一页都由前端去处理,除非刷新页面,否则不再请求后端
Sql 语句类似如下:
Select column from table where id < $max_id
这样的话新产生的数据就不会被列入当前被查询的数据集中了,因为当前新数据的id 肯定大于max_id 的。
1、前面几位提到的将结果存储到如
redis
,memcahe
等,下次再查询的时候先看cache里面是否有,有则使用之,无查询并缓存之。2、使用Mysql创建临时表
CREATE TEMPORARY TABLE temp .....
第一次查询,数据发生变化,第二次查询,结果和前一次不一样不能叫做“出错”,这个恰恰是正确的行为
其他几位的解决方案能够满足你的要求
不能把这个结果保存起来当做一张表吗?