[pgsql-jp: 35435] Re: クエリー結果の行数を返す

ISHIDA Akio iakio @ mono-space.net
2005年 5月 27日 (金) 21:33:37 JST


こんにちは。石田@苫小牧市です。

# [宣伝]明日はJPUG北海道支部講演会です
# お時間のあるかたは是非足をお運びください
# http://www.postgresql.jp/branch/hokkaido/2005-05-28/

Koyama Manabu wrote:
> 小山といいます。
> FedoraCode1+Apache2.0+PostgreSQL7.4.5+PHP4.3.7
> PEARDBとSmarty2.6.3を使用しています。
(中略)
--------------------------------------------
> こういった感じでレコードを取得できてブラウザに表示できています。
> Aの部分のクエリーの結果のレコード数を取得したいのですが、
> PEARDBを使用した場合の方法が分かりません。
> SQL Serverであれば、ストアドプロシージャで
> クエリーの直後に"@@rowcount"とすれば、行数を
> 取得してoutputパラメータに代入すれば、クライアント側に
> 取得できます。
> 
> PL/PgSQLにもこういった使い方があるのかとも思い、
> 探してみました。「GET DIAGNOSTICS integer_var = ROW_COUNT;」
> といった使い方があるみたいですが、上記表示の
> PL/pgSQLで結果を受取ることが出来るのでしょうか?
> 
> またPHP側でも簡単な方法があるのでしょうか?
> "pg_num_rows"という関数があるみたいなのですが、
> これはPEARでは使えないのでしょうか?

PEAR::DBでもnumRows()というメソッドがありますが、
この場合はgetAll()しているので使えません。
(numRows()を使うのであれば、query()のように
Resultを返すメソッドを使います)

http://pear.php.net/manual/en/package.database.db.db-result.numrows.php

それよりgetAll()で配列として返ってきているのだから
count($res)などで配列の個数を数えてしまえば
いいんじゃないでしょうか。



pgsql-jp メーリングリストの案内