首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逐个显示结果

问逐个显示结果
EN

Stack Overflow用户
提问于 2012-02-07 19:02:47
回答 5查看 353关注 0票数 2

假设我有一个包含10万个条目的庞大数据库,my_table (id,name),我想调用所有要显示的实体

代码语言:javascript
复制
$conn = mysql_connect('localhost','USER','PASS') or die(mysql_error());
mysql_select_db('my_table',$conn);

$sql = "SELECT * from my_table";
$result = mysql_query($sql,$conn);

while ($row = mysql_fetch_array($result)){

$name = $row['name'];
$id = $row['id'];

echo $name;
echo "<br>(done)<br>";

}

问题

这个问题让我几乎要哭了,它需要很长时间才能加载,然后它会同时显示名字(记住100,000个条目的my_table ),有时它会突然显示一次,甚至有时会挂掉。

我的问题

我有什么办法叫它吗?这样它就可以用一个名字显示结果,比如流name1 (完成)、name2 (完成)、name3 (完成)、name4 (完成)、name5 (完成)、......etc不同时显示所有内容。

恐怕它需要一些ajax的想法,或者不知为什么我真的不知道,但这对我来说很重要,所以您的帮助对我非常有用。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-07 19:15:40

Ajax非常容易学习。

给你:数据库

可以使用LIMIT限制要获取的行数。在客户端维护一个计数器,只要您想要获取下一组行,就继续发送它。并根据计数器获取行。

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 19:23:55

您需要使用AJAX。

MySQL支持服务器端游标,您可以通过调用attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE)来启用这些游标.但是,要使其工作,您需要在应用服务器上运行PHP,该服务器将持久化AJAX调用之间的连接。如果可以这样做,那么将查询作为准备语句,在AJAX调用中传递一个会话令牌,以标识查询语句,并在每次收到1000请求时只获取AJAX (或其他什么)行。

如果不能这样做,则可以提供页码并将其传递给LIMIT子句:

代码语言:javascript
复制
SELECT  *
FROM    mytable
ORDER BY
        id
LIMIT   $pageSize
OFFSET  $pageNum * $pageSize

但是,它的表在调用之间发生了更改,这可能会破坏顺序。

票数 3
EN

Stack Overflow用户

发布于 2012-02-07 19:08:43

每秒钟进行一次Ajax调用,以提取一行。创建一个计数器,在ajax运行之后,将其添加到计数器中。在运行ajax之前测试计数器,看看它是否在100,000,如果没有运行ajax,并将计数器发送到php文件,告诉它在sql语句中的WHERE id= $counter。

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

https://stackoverflow.com/questions/9182214

复制
相关文章

相似问题

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