[PHP-users 10419] pg_fetch_objectのエラー

Genshirou Taki php-users@php.gr.jp
Mon, 30 Sep 2002 12:29:27 +0900


g_takiといいます。

Postgres 7.2.2
GCC 3.2
Solaris8(IA)
PHP-4.2.2
で使用しています。

$numrow = pg_numrows($result)
の数だけ、pg_fetch_object($result,$i)を実行したいのですが、
1回しか実行できません。


現象:

以下のようなテーブルにおいて、

create table cart_box(
	session_id  text,
	item_id     integer,
	counter     integer,
	total       integer,
	primary key(session_id, item_id)
);


以下のような処理を実行させました

$sql = "SELECT * FROM cart_box WHERE session_id='".$PHPSESSID."' ORDER BY item_id";
$result = execsql($sql);  //グローバル変数としてresource を返す自作関数
$numrow =  pg_numrows($result);
//ここで$numrowは上記SELECTで得られる行数が返ってくることを確認済み
$i=0;
while($data = pg_fetch_object($result,$i)){
	//処理
	$i++;
}

しかし、このループは一回しか廻ってくれません。
2回目に入った時点で以下のような警告がでてしまいます。
Warning: Unable to jump to row 1 on PostgreSQL result index 9

pg_fetch_objectのマニュアルを見ると、2番目の引数はオプションになるよう
なので、
while($data = pg_fetch_object($result)){
としましたが、警告が表示されないだけで、結果は変わりませんでした。




同じような処理を他でも行っているのですが、
pg_fetch_object()でのエラーは出たことが無く、
原因がわかりません。

怪しいと疑う点などアドバイスいただけないでしょうか?