把sql语句查询到的结果暂时保存

发布于 2022-09-04 11:42:20 字数 385 浏览 28 评论 0

搜索关键字,并把搜索到的结果分页 , 怎么做不会出现问题 ?
我用的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

﹂绝世的画 2022-09-11 11:42:21

使用 memcache 加缓存可以解决你想要的暂时保存哈

浸婚纱 2022-09-11 11:42:21

如果要直接从第一次查询结果中选取,可以选择把第一次查询的数据以JSON格式(或别的格式)保存到文本文件中,“非第一次查询”情况下的数据调用就直接读取该文本文件做相应的数据处理,等到下一次的“第一次查询”再从数据表中读取文件,并将读取到到数据更新到这一文本文件中。

个人想法,不知道是否符合题主要求。

再可℃爱ぅ一点好了 2022-09-11 11:42:21

很简单啊,所有数据一次输出到前端,让前端去分页,每次下一页都由前端去处理,除非刷新页面,否则不再请求后端

仲春光 2022-09-11 11:42:20

这个问题在web 端不是很明显,在app 开发中就很容易发现了,有时候还会被误认为是bug 呢。
目前我采用的机制是,客户端(网页js 端)每次请求得时候带着我上一页的最后一个id ,然后我根据此id 推出接下来的分页数据。

Sql 语句类似如下:
Select column from table where id < $max_id

这样的话新产生的数据就不会被列入当前被查询的数据集中了,因为当前新数据的id 肯定大于max_id 的。

雅心素梦 2022-09-11 11:42:20

1、前面几位提到的将结果存储到如redis,memcahe等,下次再查询的时候先看cache里面是否有,有则使用之,无查询并缓存之。
2、使用Mysql创建临时表CREATE TEMPORARY TABLE temp .....

眉黛浅 2022-09-11 11:42:20
  1. 第一次查询,数据发生变化,第二次查询,结果和前一次不一样不能叫做“出错”,这个恰恰是正确的行为

  2. 其他几位的解决方案能够满足你的要求

得不到的就毁灭 2022-09-11 11:42:20

不能把这个结果保存起来当做一张表吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文