1

我在 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 管理器中,我有两个结果集。一个是查询,另一个是它的行数。我首先resultSet使用 ez sql。

$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 来获取它。

4

1 回答 1

1

numberOfRows.$_SESSION 总是 20 吗?

跟进

好的,现在我了解您的问题,因为它在评论中得到了更好的描述:))

你错过的是SQL_CALC_FOUND_ROWS

像这样使用它:

SELECT SQL_CALC_FOUND_ROWS * FROM tab_a limit 50;
SELECT FOUND_ROWS();

如果您省略它,它将始终返回 50,但如果您包含它而不是实际计数,因为它将没有限制

于 2014-09-03T12:54:56.313 回答