Zend_Db:如何从表中获取行数?

时间:2009-12-18 21:14:23

标签: mysql zend-framework zend-db-table

我想知道表中有多少行。我使用的数据库是MySQL数据库。我已经有一个Db_Table类用于fetchAll()之类的调用。但我不需要表中的任何信息,只需要行数。如何在不调用fetchAll()的情况下获取表中所有行的计数?

7 个答案:

答案 0 :(得分:26)

$count = $db->fetchOne( 'SELECT COUNT(*) AS count FROM yourTable' );

答案 1 :(得分:8)

计算fetchAll被认为有害的行。

以下是如何使用Zend_Db_Select方式:

$habits_table = new Habits(); /* @var $habits_table Zend_Db_Table_Abstract */
$select = $habits_table->select();
$select->from($habits_table->info(Habits::NAME), 'count(*) as COUNT');
$result = $habits_table->fetchRow($select);
print_r($result['COUNT']);die;

答案 2 :(得分:4)

正确的Zend-Way就是像这样使用Zend_Db_Select:

$sql = $table->select()->columns(array('name', 'email', 'status'))->where('status = 1')->order('name');
$data = $table->fetchAll($sql);
$sql->reset('columns')->columns(new Zend_Db_Expr('COUNT(*)'));
$count = $table->getAdapter()->fetchOne($sql);

这是在Zend_Paginator中完成的。其他选项是在列列表前添加SQL_CALC_FOUND_ROWS,然后使用此查询获取找到的行数:

$count = $this->getAdapter()->fetchOne('SELECT FOUND_ROWS()'); 

答案 3 :(得分:3)

你可以做一个

SELECT COUNT(*)
FROM your_table 

答案 4 :(得分:3)

$dbo->setFetchMode( Zend_Db::FETCH_OBJ );
$sql = 'SELECT COUNT(*) AS count FROM @table';
$res = $dbo->fetchAll( $sql );
// $res[0]->count contains the number of rows

答案 5 :(得分:2)

向Zend_DB对象添加计数功能计算所有表行

public function count()
{
    return (int) $this->_table->getAdapter()->fetchOne(
        $this->_table->select()->from($this->_table, 'COUNT(id)')
    );
}

答案 6 :(得分:2)

我是一个极简主义者:

public function count()
{
    $rows = $db->select()->from($db, 'count(*) as amt')->query()->fetchAll();
    return($rows[0]['amt']);
}

可以在所有表​​格中使用。