[PHP-users 17371]pg_fetch_result()でエラー

gotou gotou @ hokkou.co.jp
2003年 8月 18日 (月) 19:21:47 JST


gotouです。

データベースから値を取得したいのですが、なぜかpg_fetch_resultで
エラーが出力されます。
値はとれているようなのですが、エラーの出力される理由がわかりません。
この未熟者に知恵を貸してください。

下記がデータベースから値を取得している箇所のソースです。
-------------------------------------------------------

$sql = "SELECT tanaoroshi_tbl.*, syohin_mst.syohin_mei "
	."	FROM tanaoroshi_tbl INNER JOIN syohin_mst USING (syohin_cd) "
	."	WHERE tanaoroshi_tbl.tana_tuki='".$tukido."' AND
tanaoroshi_tbl.jihan_no='".$jihan."' "
	."		AND tanaoroshi_tbl.col=".$i.";";
$rs = pg_query($cnn, $sql);
if(!$rs){
	echo pg_result_error($rs);
	echo $sql;
	exit;
}
echo "<!--". $sql ."-->";
for($j=0; $j<pg_num_fields($rs); $j++){
	$table[$lp][pg_field_name($rs, $j)] = pg_fetch_result($rs, 0, $j);
	echo "<!--". pg_fetch_result($rs, 0, $j) ."-->";
}
pg_free_result($rs);

--------------------------------------------------------------

そして、実際のSQLとデータベースの値が下記になります。
--------------------------------------------------------------
SELECT tanaoroshi_tbl.*, syohin_mst.syohin_mei FROM tanaoroshi_tbl INNER
JOIN syohin_mst USING (syohin_cd) 	WHERE tanaoroshi_tbl.tana_tuki='200306'
AND tanaoroshi_tbl.jihan_no='00004' AND tanaoroshi_tbl.col=1;
(以下がデータベースから呼び出したデータです。)
<!--2003-06-28-->
<!--00004-->
<!--1-->
<!--991003-->
<!--59-->
<!--39-->
<!--49-->
<!--270.00-->
<!--270.00-->
<!--241.65-->
<!--13230-->
<!--284410-->
<!--200306-->
<!--マイルドセブン ライト ソフト-->
-------------------------------------------------------------------
このSQLで出力されるレコードは、1つだけです。
その出力されたレコードの列の値を$table[$lp][]の配列に代入するために

for($j=0; $j<pg_num_fields($rs); $j++){
	$table[$lp][pg_field_name($rs, $j)] = pg_fetch_result($rs, 0, $j);
}

とfor文でまわしています。そこで、pg_fetch_result()で値は取れているのですが

Warning: pg_fetch_result() unable to jump to row 0 on PostgreSQL result
index 149 in /usr/local/apache/htdocs/slot/zaiko.php on line 68
Warning: pg_fetch_result() unable to jump to row 0 on PostgreSQL result
index 149 in /usr/local/apache/htdocs/slot/zaiko.php on line 69

というようなエラー文が出力されます。
69行目と69行目が、上記ソースのfor文の中の2行です。

pg_fetch_result($rs, 0, $j)で、第2引数に0を使っているのが原因かと思うのです
が、
以前はこのような指定でも動作していたので、どうにも理由がわかりません。
データベースから読み出したレコードは、1レコードのみですので、引数に0を指定し
ても
問題ないと思うのですが…。
1レコードのみ読み出されるのは、確認しました。

echo "<!--". pg_fetch_result($rs, 0, $j) ."-->";で出力させているところを
echo "<!--". $table[$lp][pg_field_name($rs, $j)] ."-->";に変えると、この行の
エラーは
なくなり、代入された値を出力させました。

pg_fetch_result($rs, 0, $j)はだめなのでしょうか?(でも使えたんだけどな…)

長文メールになってしまいましたが、どうかよろしくお願いします。

こちらの環境は

PHP4.2.4
PostgreSQL7.2.3

です。



PHP-users メーリングリストの案内