首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL在加载时显示结果

MYSQL在加载时显示结果
EN

Stack Overflow用户
提问于 2013-03-27 22:19:53
回答 3查看 84关注 0票数 0

我有一个12000种产品的数据库。我有一个查询,它将在一个页面上显示大约3000个产品,它需要一段时间才能显示。但是,数据会在整个查询或循环结束后显示。有没有办法在拉取结果时显示每个结果?下面是我的代码。

代码语言:javascript
复制
$result = mysql_query("SELECT title, model, description FROM products WHERE price > 500");
while($row = mysql_fetch_array($result)):
...
endwhile;

任何帮助都是非常感谢的。谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-27 22:25:03

mysql扩展已被弃用,最好切换到mysqli或pdo。但是,由于这是一个相同的问题,不管是什么接口/模块,我们现在还是使用mysql_*吧……

当调用mysql_query(...)时,该函数仅在将完整的结果集从MySQL服务器传输到php进程的内存中之后才返回。

请改用mysql_unbuffered_query(...)

代码语言:javascript
复制
<?php
$result = mysql_unbuffered_query("SELECT title, model, description FROM products WHERE price > 500");
while($row = mysql_fetch_array($result)):
...
  // output
  // maybe flush() or ob_flush() here...
endwhile;

其中的差异解释在

您还必须牢记潜在的输出缓冲区:http://docs.php.net/flushhttp://docs.php.net/ob_flush

对于html客户端/浏览器,您必须将部分数据放入一个结构中,该结构可以在发送所有数据之前呈现。因此,例如,不固定的表最有可能是次优的。例如,参见https://en.wikipedia.org/wiki/Incremental_rendering

票数 1
EN

Stack Overflow用户

发布于 2013-03-27 22:22:26

这就是所谓的从db延迟加载。

看看这个article或者这个tutorial

如果我必须做一个综合,基本上你LIMIT你的查询到一定数量的记录,这些记录必须从数据库中拉出。一旦达到某些条件(分页更改、向下滚动等),您就会触发一个ajax调用,该调用将检索其他记录,等等。

票数 2
EN

Stack Overflow用户

发布于 2013-03-27 22:28:28

有许多变量可以实现这样的效果。

首先,php设置应该允许你使用输出缓冲(看看output_buffering参数,也许还有implicit_flush)。在此之后,您可能应该使用flush()和/或ob_flush()

你应该考虑的另一件事是,浏览器本身并不总是允许你使用输出缓冲,这就是众所周知的“问题”。

对于查询本身,您可能想尝试使用mysql_unbuffered_query (或更好的MySQLi/PDO等效项)。

总而言之,在我看来,实现这种效果的最好方法是使用ajax数据轮询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15661222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档