12

テーブルにいくつの行があるか知りたいです。私が使用しているデータベースはMySQLデータベースです。のような呼び出しに使用しているDb_TableクラスがすでにありますfetchAll()。ただし、テーブルからの情報は必要ありません。行数だけが必要です。呼び出さずにテーブル内のすべての行の数を取得するにはどうすればよいfetchAll()ですか?

4

7 に答える 7

27
$count = $db->fetchOne( 'SELECT COUNT(*) AS count FROM yourTable' );
于 2009-12-18T23:15:58.513 に答える
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;
于 2009-12-18T23:10:03.360 に答える
5

適切な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()'); 
于 2011-05-15T12:28:16.980 に答える
3

あなたはすることができます

SELECT COUNT(*)
FROM your_table 
于 2009-12-18T21:22:28.873 に答える
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
于 2009-12-18T21:22:42.747 に答える
2

I'm kind of a minimalist:

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

Can be used generically on all tables.

于 2012-05-10T20:15:52.503 に答える
2

Zend_DB オブジェクトにカウント機能を追加して、テーブルのすべての行をカウントするには

public function count()
{
    return (int) $this->_table->getAdapter()->fetchOne(
        $this->_table->select()->from($this->_table, 'COUNT(id)')
    );
}
于 2011-05-14T17:47:09.007 に答える