2009-08-15 39 views
2

我已經請求MySQL的結果,並通過他們這樣的循環:如何輕鬆地循環訪問MySQL結果?

$query = "SELECT * FROM $table"; 
$result = mysql_query($query); 
for($i = 0; $i < mysql_num_rows($result); $i++){ 
    echo mysql_result($result, $i, $row); 
    //do something else; 
} 

你也許可以看看會發生什麼。如果一行已被刪除,該怎麼辦?如果第一項消失了怎麼辦?在這種情況下,列表中可能有30個項目,但最後的項目索引位於第50個。我該如何解決這個問題或我可以使用的其他系統?

回答

7
while($temp = mysql_fetch_assoc($result)) 
{ 
    echo $temp['id']; // ID Column 
} 

但是BTW。 mysql_num_rows返回您獲取的行數。如果你有一行被刪除,它不會被提取,因此它不會被計數。

+1

需要注意的是,除了mysql_fetch_assoc之外,還有其他函數,主函數是mysql_fetch_object,除了返回類stdClass的對象外,其他函數的工作方式相同。它可以以與mysql_fetch_assoc相同的方式在while()循環中使用。 – 2009-08-15 01:51:31

+0

if if通常做 while($ result和$ temp = mysql_fetch_assoc($ result)) – snitch182 2013-02-07 12:28:44

+0

當你做$ temp = mysql_fetch_assoc($ result)時,基本上指針會移動到下一條記錄。有沒有辦法將指針重置爲查詢的開始? – 2013-02-19 10:39:23

1

另外 - 我相信整個行集是在查詢時獲得的,查詢執行後刪除的行仍然會出現在您的結果中。