2009-08-15 37 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

另外 - 我相信整个行集是在查询时获得的,查询执行后删除的行仍然会出现在您的结果中。