2012-01-08 202 views
2

通常,当您通过一个MySQL结果迭代你做这样的事情:通过迭代的MySQL结果用一个for循环

while ($row = mysql_fetch_assoc($result)) { 
     echo $row["some argument"]; 
    } 

你如何for循环做了?这将有所帮助,因此我可以遍历结果的某个部分。我正在寻找类似的东西:

for($i = 5; $i < 10; $i++){ 
    echo $row[$i]["some argument"]; 
} 

谢谢!


EDIT 1

只是为了澄清,我需要遍历的结果的一部分,这可能意味着行5到10,例如。

此外,我的结果是表中的行的一部分,而不是整个表的一部分,所以我认为更改my_sql查询不应该是答案的一部分。

+0

我将循环的c语法改为PHP语法... – 2012-01-08 13:27:52

+1

我不同意你的编辑。恕我直言,使用'LIMIT'仍然是获得行子集(即5到10)的最正确方法。 – Kaii 2012-01-08 13:54:44

+0

请指出为什么更改sql查询不是答案的一部分? – ianace 2012-01-08 13:59:02

回答

7

我相信你可以使用mysql_result()这样的:

// Do your query here 
$result = mysql_query("SELECT * FROM your_table"); 

for($i = 5; $i < 10; $i++){ 
    echo mysql_result($result, $i, "some argument"); 
} 

编辑注意到我的PHP语法有点过,现予以更正。

4

您可以加载整个结果集到一个数组中,并访问它,你问:

$all_results = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    // Append all rows to an array 
    $all_results[] = $row; 
} 

现在,您可以访问它为:

echo $all_results[3]['somecolumn']; 

或者在for循环中:

for($i = 0; $i < 10; $i++){ 
    echo $all_results[$i]["somecolumn"]; 
} 
0

像这样:

for(int i = 0; i < 10; i++){ 
    $row = mysql_fetch_assoc($result) 
    echo $row["some argument"]; 
} 
1

有很多方法可以做到这一点,但如果您只是想使用while循环遍历所有返回的行,这是最简单的解决方案。下面是另一个:

$count = mysql_num_rows($result); 

for(int i = 0; i < $count; i++){ 
$row = mysql_fetch_assoc($result); 
    echo $row["some argument"]; 
} 
1

如果你只需要运行光标前进,你会

for(int i = 0; i < 10; i++){ 
    $row = mysql_fetch_assoc($result 
    if (!$row) break; 
    echo $row["some argument"]; 
} 

如果你需要,你需要的结果拉成一个阵列可搜索的游标;

$rows=array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $rows[]=$row; 
} 

//.. later, maybe repeatedly 

for(int i = 0; i < 10; i++){ 
    echo $rows[i]["some argument"]; 
} 
2

,如果您希望通过行子范围的任何particlar领域涉水的话可以考虑

​​

常规

返回领域的结果属性row_num'th行的值

说,如果你想获得“一些参数”字段的值的结果行的子范围,你可以考虑以下片段

$result = mysql_query("some query"); 
$num_rows = mysql_num_rows($result); 
for($i=5;$i<$num_rows;$i++) { // here I have used range 5 to max of result rows 
    echo mysql_result($result,$i,"some argument"); 
}