在Zend_Db_Table_Abstract上我正在使用此代码来获取我的选择的结果计数:
$this->setTableName('visitors');
$select = $this->select()
->from('visitors')
->columns(array('total' => new Zend_Db_Expr('COUNT(*)')))
->where('...');
$visits = $this->_fetch($select);
是否有更好的方法,即只返回计数。这会返回数组中的其他一些数据......我只想要计算结果。在直接的mySQl中,等效的是select count(
mycol ) from visitors where ....
答案 0 :(得分:4)
这是未经测试的,但应该让你开始:
$results = $this->getAdapter()
->query("SELECT COUNT(*) AS total FROM visitors WHERE ...")
->fetchAll();
$visits = $results[0]["total"];
您不需要为每个查询使用表/选择界面。
更新:+1来自@SMka的评论,指出这可以更简单:
$visits = $this->getAdapter()
->fetchOne("SELECT COUNT(*) AS total FROM visitors WHERE ...");
答案 1 :(得分:4)
$count = $this->select()->from($this,'COUNT(*)')->query()->fetchColumn();
答案 2 :(得分:1)
http://framework.zend.com/manual/en/zend.db.adapter.html
请参阅fetchOne
$this->setTableName('visitors');
$select = $this->select()
->from('visitors')
->columns(array('total' => new Zend_Db_Expr('COUNT(*)')))
->where('...');
$count = $this->getAdapter()->fetchOne($select);
答案 3 :(得分:0)
这里你去了
public function fetchCount($data)
{
$sql = "SELECT COUNT(*) AS count FROM table WHERE field = ".$data;
$count = $this->db->fetchOne($sql, array('count'));
return $count;
}
答案 4 :(得分:-1)
如果您愿意,也可以使用fetchAll()
或同等内容获取整个行集,然后使用count()
:
$rows = $table->fetchAll();
$count = count($rowset);
这可能只是最好的解决方案,如果你要用该行集做其他事情。