2011-09-12 9 views
2

を数えます。これは、配列内のいくつかの他のデータを返します...私は結果の数がほしいです。ストレートMySQLでは同等はselect count( mycol ) from visitors where ....取得Zend_Db_Table_Abstractは、私は私の選択の結果の数を取得するには、このコードを使用してい取得Zend_Db_Table_Abstractで

+2

を行きます。 try: – SMka

+0

'fetchOne()' SQLの結果の最初の行の最初の列を取得します。 '$ count =(int)$ this-> getAdapter() - > fetchOne($ select) – SMka

答えて

4

これはテストされていないだろうが、あなたが始める必要があります:あなたはすべてのクエリについては、表/選択インタフェースを使用する必要はありません

$results = $this->getAdapter() 
    ->query("SELECT COUNT(*) AS total FROM visitors WHERE ...") 
    ->fetchAll(); 
$visits = $results[0]["total"]; 


更新:これはもっと簡単することができることを指摘し@SMkaからのコメントへの+1:

$visits = $this->getAdapter() 
    ->fetchOne("SELECT COUNT(*) AS total FROM visitors WHERE ..."); 
+0

あなたの最後の文章は安堵です! – Owen

+1

私はZend_Db_Selectに取り組みました。アプリケーションロジックや変数からクエリを1つずつビルドする必要があるときに、インターフェイスが役立つことをドキュメントで明確にしようとしました。完全なSQLクエリを文字列で記述することができるときには、そのインタフェースを使用する必要はありません。 * SQLはすでにドメイン固有の言語です。* –

+0

@Bill KarwinがSQLを解析するのに時間がかかりますが、PDO拡張機能を持つZend_Db_Selectは使用できません。 –

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); 
+0

これは、すべてのデータを取得してカウントを与えるか、単にカウントをフェッチしますか? – Owen

4
$count = $this->select()->from($this,'COUNT(*)')->query()->fetchColumn(); 
を見ます
+0

これは興味深いようですが、私はquery()ビットにcount(mycol)のようなものを追加しますか? – Owen

+0

何も必要ありません。あなたが好きなら、あなたは$ thisを '訪問者'に置き換えることができます。 –

+0

OKですが、WHERE条件を追加するにはどうすればいいですか( 'WHERE ...')? – Owen

-1

あなたが希望した場合、あなたはまた、単にfetchAll()または同等全体の行セットをフェッチしてから使用することができますcount()

$rows = $table->fetchAll(); 
$count = count($rowset); 

これはしかし、おそらくあなたはその行セットで何かをやっているだろう場合のみ、最適なソリューションです。ここ

+1

それは悪い方法です。テーブルからすべてをフェッチしてカウントするだけです。テーブルに1kkレコードがある場合は? ^) – SMka

+0

テーブル内のレコードを数えただけでは、それが悪い解決策であることに同意します。つまり、「これはおそらく、その行セットで何か他のことを行うなら、これはおそらく最良の解決策です」と言いました。 Zend_Db_Table_Rowsetで 'count()'を使用できることを示してみましょう。 :) –

+1

カウントのみの場合行セット - 方法2: '$ count = $ rowset-> count();' :) – SMka

0

屋だけカウント

public function fetchCount($data) 
{ 
    $sql = "SELECT COUNT(*) AS count FROM table WHERE field = ".$data; 

    $count = $this->db->fetchOne($sql, array('count')); 

    return $count; 
} 
関連する問題