MySQL在查询后选择前5行

时间:2011-05-13 11:21:43

标签: php mysql

我有一个mysql结果(有很多行)我将在稍后使用。现在,我只需要访问(总和)前5行。问题是使用“AS”从查询中保存了行,所以现在可以使用$row['name']访问它们。如何在不使用每个行的“名称”的情况下选择前5行?

有没有办法这样做:

PHP:

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

修改
对不起,我的问题是错的。 实际上:如何通过获取数组而不丢失值来使用相同的$ result 2次?

4 个答案:

答案 0 :(得分:3)

您使用什么来处理数据库? 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资源的任何好处。

答案 1 :(得分: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'];
}

根据需要多次使用$ result

答案 2 :(得分:1)

您可以使用mysql查询

从table_name_ravi limit 0,5

中选择*

只需使用此

答案 3 :(得分:0)

我认为你混淆了一些事情。 $row['name']访问名称为名称的行的列,您应该使用您的抓取功能while( $row = mysql_fetch_assoc($result) ) {}

相关问题