从sql结果用php回复第30行?

时间:2009-08-25 15:11:19

标签: php mysql

我想从无限行的sql获取结果,我不想在我的sql语句中使用limit因为我需要知道总行数。但我只想echo,例如第30-60行。

我使用php。

4 个答案:

答案 0 :(得分:4)

首先,运行此声明:

SELECT  SQL_CALC_FOUND_ROWS
        *
FROM    mytable
ORDER BY
        mycol
LIMIT 30, 30

,获取行并将它们保存到数组中。

在此之后,运行以下声明:

SELECT  FOUND_ROWS()

,它将显示前一个语句返回的行总数,如果没有LIMIT子句。

答案 1 :(得分:1)

http://php.net/manual/en/function.mysql-data-seek.php

  

mysql_data_seek()将与指定结果标识符关联的MySQL结果的内部行指针移动到指向指定的行号。下一次调用MySQL获取函数(例如mysql_fetch_assoc())将返回该行。

mysql_data_seek($res, 30);
for ($i = 0; $i < 30; ++$i) {
  $row = mysql_fetch_assoc($res);
  var_dump($row);      
}

答案 2 :(得分:0)

$query=mysql_query("SELECT....");
$array=array();
while($row=mysql_fetch_row($query)){
$array[]=$row;
}

现在你有了包含所有行的$ array数组。如果您只想打印30到60之间的行,请使用:

for($i=30;$i<60;$i++) echo $array[$i][0];

答案 3 :(得分:0)

我相信Quassnoi意味着:

SELECT SQL_CALC_FOUND_ROWS * FROM  accounts ORDER BY accountID LIMIT 30

然后运行此select语句以查找行数:

select found_rows();

当然,你不应该使用*来进行任何查询,因为它会影响性能。使用所需列的名称。我认为这是最好的方式,因为它是最有效的。如果您只需要一个计数和30行,则无需返回整个表格。