2011-05-13 84 views
2

我有一个mysql结果(有许多行),我将在以后使用。目前,我只需要访问(总和)前5行。问题是使用“AS”从查询中保存行,所以现在可以使用$row['name']来访问它们。我怎样才能选择前5行而不使用每个人的“名称”?MySQL在查询后选择前5行

有没有办法这样做,像这样:

PHP:

for($i=0;$i<5;++$i) 
    echo $row[$i]; 

编辑
对不起,我的问题是错误的。 实际上:我怎样才能使用相同的$结果2次而不丢失取数组的值?只要你想

+1

'for($ i = 0; $ i <5; ++ $ i)'语句有什么问题? – ksindi 2011-05-13 11:24:30

+0

您可以在mysql查询中使用LIMIT获取5行而不是获取所有行并仅使用5行。 – 2011-05-13 11:26:25

+0

@hydra,对不起,请参阅我的编辑@harry因为后来我需要所有值 – Cristy 2011-05-13 11:27:51

回答

3

你用什么与DB工作的取功能工作? PDO?库MySQLi? MySQL扩展?

如果你使用MySQL扩展(mysql_connect()mysql_query()等),你可以使用mysql_data_seek()移动的MySQL结果内部的行指针:

$res = mysql_query($sql); 
if (mysql_num_rows($res)) { 
    // process first 5 lines 
    for ($n = 0; $n < 5; ++$n) { 
     $row = mysql_fetch_assoc($res); 
     if ($row === false) { 
      break; 
     } 
     // do something with $row 
     // ... 
    } 
    // reset pointer 
    mysql_data_seek($res, 0); 
    // process all rows 
    while ($row = mysql_fetch_assoc($res)) { 
     // do something with $row 
     // ... 
    } 
} 
mysql_free_result($res); 

另一种选择是获取所有成果转化一个数组然后使用该数组。我想不出打开MySQL资源的好处。

2
$result = array(); 
while($row = mysql_fetch_array($queryResult)) { 
    $result[$row['primaryKey']] = $row; // index the $result according to any fieldValue(say primay key) so that you can access a single records without looping) 
    echo $row['name']; 
} 

使用$结果多次想你混淆东西。 $row['name']访问名为一个行的列锼,你应该在你的while($row = mysql_fetch_assoc($result)) {}

1

你可以使用MySQL查询作为

SELECT * FROM table_name_ravi限制0,5

只是用这个