2010-01-16 189 views
1

當從MySQL中獲取數據時,有沒有限制while循環的方法?限制while循環

$query = "SELECT * 
    FROM `table` 
    WHERE user_id = '$id' 
    ORDER BY `ID` DESC"; 

$result = mysql_query($query); 

while ($info = mysql_fetch_assoc($result)) { 
    //stuff 
} 

在這裏,我不想使用MySQL的限位功能,我可以限制而比另外一個循環?

感謝

回答

7

您可以隨時break循環,當它達到其目標。否則,您可以使用for循環,因爲Nick建議。

$count = 0; 

while ($count < 4 && $info = mysql_fetch_assoc($result)) { 
    //stuff 

    $count++; 
} 

但是請注意,它可能是一個更好的主意,以限制從與LIMIT命令查詢結果集。

+0

,所以我怎麼會知道,如果它取例如4條記錄? – 2010-01-16 00:17:55

+0

以示例更新了答案。但請注意,限制SQL查詢的循環可能是一個更好的主意。 – 2010-01-16 00:21:28

+1

它的工作感謝 – 2010-01-16 00:23:59

1

只需添加一個檢查的行數:

while ($rowcount < 100 && $info = mysql_fetch_assoc($result)) { 
    $rowcount += 1; 
//stuff 
} 
3

使用for循環。例如,通過高達五行循環...

for ($i = 0; $info = mysql_fetch_assoc($result) && $i < 5; ++$i) { 
    // do stuff 
} 
0

您可以隨時跳出你的PHP循環的初期 - 但你應該使用MySQL的LIMIT子句這一點 - 整個結果集在調用mysql_query()時可能會從數據庫中獲取並傳輸到客戶端,從而可能會導致內存和性能問題。

+0

我有一些數據,不能用mysql查詢過濾,我需要檢查所有字段這就是爲什麼我在while循環過濾它們,所以我需要限制while循環 – 2010-01-16 00:44:58

0

您可以使用break來結束循環。

因此,它可能是

$result = mysql_query($query); 
$count=0; 

while ($info = mysql_fetch_assoc($result)) { 

if($info=="what you're looking for"){ $count+=1; } 

if($count >= 4){ break; }//break will exit the while loop 
} 

break PHP文檔