我在MySQL中有一个存储过程。它有2个选择查询。这是其中的一部分。
@query="select SQL_CALC_FOUND_ROWS...LIMIT 1, 20"
PREPARE query FROM @query;
EXECUTE query;
DEALLOCATE PREPARE query;
select FOUND_ROWS() as numberOfRows;
在我的sql的sql管理器中,我有两个结果集。一个是查询,另一个是行数。我先用ez sql获得resultSet
。
$getReadingsByStreet=$this->db->get_results("call `mbusGetClientsByStreet`('".$_SESSION['street']."',".$_SESSION['page'].",".$_SESSION['bild'].",".$_SESSION['korp'].",".$_SESSION['flat'].",@x);");
if ($getReadingsByStreet)
{
foreach ($getReadingsByStreet as $row)
{
$_SESSION['pageAmount']=$row->numberOfRows;
$res.="<tr><td><a class='serialLink' href='./'>".$row->serial_num."</a></td><td>".$row->value."</td><td>".$row->street." ".$row->bild." ".$row->korp." ".$row->flat."</td></tr>";
}
}
很遗憾,我无法获得numberOfRows
。 $_SESSION
并未改变其价值。我怎样才能获得php中的行数?它有LIMIT,所以我需要SQL_CALC_FOUND_ROWS来获取它。
答案 0 :(得分:1)
是numberOfRows。$ _ SESSION总是20?
好的,现在我理解你的问题,因为它在评论中有更好的描述:))
您错过的是 SQL_CALC_FOUND_ROWS
像这样使用它:
SELECT SQL_CALC_FOUND_ROWS * FROM tab_a limit 50;
SELECT FOUND_ROWS();
如果省略它,它将始终返回50,但如果包含它而不是实际计数,因为它没有限制