我有一个mysql结果(有很多行)我将在稍后使用。现在,我只需要访问(总和)前5行。问题是使用“AS”从查询中保存了行,所以现在可以使用$row['name']
访问它们。如何在不使用每个行的“名称”的情况下选择前5行?
有没有办法这样做:
PHP:
for($i=0;$i<5;++$i)
echo $row[$i];
修改
对不起,我的问题是错的。
实际上:如何通过获取数组而不丢失值来使用相同的$ result 2次?
答案 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) ) {}