- ベストアンサー
postgresql関数をつかったレコードの読み込みについて
いつもお世話になっております。 早速ですが、 pg_fetch_array(result,i,PGSQL_BOTH) という関数でレコードのフィールドを配列で取得したいのですが、以下のようなエラーが出てしまいます。 Warning: Unable to jump to row 1 on PostgreSQL result index 2 in しかし、フィールド情報は取得しているようなのですが、何がいけないといわれているのでしょう? また、取得した配列はキーが連想配列になっていて、添字ではアクセスできません。オプション「PGSQL_NUM」も試してみましたが、ダメでした。 何をどのように調べたら良いか立ちつくしております。 どなたか、アドバイスを頂けないでしょうか php 4.06 postgresql 7.2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >Warning: Unable to jump to row 1 on PostgreSQL result index 2 このエラーは存在しない行を取り出そうとしたときによく出るメッセージのようです。 >フィールド情報は取得しているようなのですが どんな結果が返ってきてそう思われたのでしょうか? SQL文と引数を全部表示させてみて、SQLが直接実行できるかどうか確かめてみてください。
その他の回答 (1)
- duckling
- ベストアンサー率47% (88/185)
$namedata=pg_fetch_array($result,$i) ↑この行為で DBから返って来た情報、$result,$i の行を 配列に格納してあるので その連想配列になっている情報の key を array_keys でゲットして出力したらOKです。(私はその方法でゲットしてます。) 下のURLが参考になると思います。
お礼
参考URLありがとうございました 大変参考になりました。 初めてのpostgresでつまずくことが多いですが 一つずつ自分の技術にしていきたいと思います ありがとうございました
補足
早速のアドバイスありがとうございます。 >どんな結果が返ってきてそう思われたのでしょうか? SQL文と引数を全部表示させてみて、SQLが直接実行できるかどうか確かめてみてください。 $result=exec($dbconnect,"select NAME from TABLE where name='YOURNAME'"); $i=0; while($namedata=pg_fetch_array($result,$i)){ print $namedata[NAME]; } 上記のスクリプトを表示させるとYORNAMEが表示されます。 where で条件をつけて$resultに格納したレコードのみを 表示させるにはどのようにすれば良いのでしょうか? 追加質問のようで大変申し訳有りません