2013-03-27 145 views
0

我有一张大约有1000条记录的表格。Mysql限制结果?

我有一个请求:

$select = "SELECT * FROM ophlm_ancien.patrimoine"; 
$result = mysql_query($select); 
while($p = mysql_fetch_array($result)){ 
    //some actions 
} 

如果运行我的剧本,我已经在Firefox的这个错误:The connection was reset

我一个添加LIMIT 500,它的工作。 LIMIT 600也是如此。但是我总是有这个错误。

你有什么想法吗?

+0

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit 2013-03-27 14:25:44

回答

1

在服务器上增加max_allowed_packet

+1

也许明智地指定列列表。 – Kermit 2013-03-27 14:26:04

+0

我在努力,但它不起作用.. – 2013-03-27 14:29:08

+0

是的,好点,如果你不需要所有的列,不要求所有的列,即使你需要所有的列,明确地指定它们可以保证明确的故障而不是神秘的意想不到的表变化模糊。 – Wrikken 2013-03-27 14:31:00

0

截至documentation您可以用抵消LIMIT结合:

[LIMIT {[offset,] row_count | row_count OFFSET offset}] 

,它可以让你有种缓冲结果:

LIMIT子句可以被用来限制数量行通过SELECT语句返回 。 LIMIT采用一个或两个数字参数 ,它们都必须是非负整数常量(使用 预准备语句时除外)。

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大数量的行数 。

您只需要在循环中执行选择并匹配每一轮中的偏移量,直到获得所有结果。