2013-03-27 143 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採用一個或兩個數字參數 ,它們都必須是非負整數常量(使用 預準備語句時除外)。

使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大數量的行數 。

您只需要在循環中執行選擇並匹配每一輪中的偏移量,直到獲得所有結果。