使用Zend DB Table Select中的SQL_CALC_FOUND_ROWS获取总行数

时间:2010-10-23 08:34:26

标签: php sql mysql zend-framework

有没有办法在常规mysql查询中使用SQL_CALC_FOUND_ROWS来获取Zend db select中的总行数。除了运行没有limit子句的相同查询之外,我还没有找到类似的功能。

3 个答案:

答案 0 :(得分:11)

$db->select()
   ->from($tableName, array(
       new Zend_Db_Expr('SQL_CALC_FOUND_ROWS id'), 
       'name', 
       'price'
   ));

你也可以尝试用COUNT(*)替换所有cols并第二次运行查询。它实际上可能更有效(即使它是反直觉的)。这是我的应用程序的情况。

你可以这样做:

$select->reset('cols')->reset('limit')->cols('COUNT(*)'); //there is a constant for the 'cols' in Select class
$db->query($select);

答案 1 :(得分:2)

因为没有其他人可以提供更好的内容,我建议您在ZF论坛上查看this post。从2008年起,ZF可能已经升级了。

答案 2 :(得分:0)

如果行内的数据也需要

,请使用此方法
   $rows = $db->select()->from('foo')->query()->fetchAll(); 

    echo 'Total number of rows found : ' . count($rows);

如果你只需要总行数,那么

$count = $db->select()->from('foo','COUNT(*)')->query()->fetchColumn();