[PHP-users 24342] Re: phpからPL/PgSQl関数の呼出

ヤマザキ t_yamazaki @ gaps.co.jp
2005年 2月 2日 (水) 21:40:29 JST


山崎@数年ぶりにのぞいてみました(´ー`)

作ったプログラムをMLに流して動かんから意見ちょうだい、ではみんな何から突
っ込んだらいいのかわからなくなります^^;
何故に人のコード修正をやらねばならんのか、ということですな。

とりあえず、悪そうだとわかっているところを、
「徹底的にシンプルな構成に書き換えて動かしてみる」
ということをお勧めします。
あとは、怪しげな場所にprint文を山ほど入れる。
この手のプログラムのデバッグには有効です。
極端な話、慣れないうちは1行実行したら一個printとかも私はよくやりました。
(今でもやってるという噂も)

ちらっと見た限りでも、少なくとも
・ちゃんとループに入っているのか
・クエリの結果がどうなっているのか
などはprint文とpg関数使えば一発でわかります。
とかね。
このあたりがわかれば、おのずと悪いところが見えてくるはずですよ。

お試しください。


※ちょっと暇だったのでレスしてみましたが、気を悪くする表現があったらごめ
んなさい。特に冒頭f^^;


>小山といいます。
><環境>
>FedoraCore1 +Apache2.0 +PHP4.3.7 + Postgresql7.4.5 + PearDB
>です。
>以下のfunctionを"select * from f3(651);"と呼び出すと、きちんと
>結果が表示されます。
>
>========================================================
>create or replace function f3(integer) returns setof text as '
>declare
>code alias for $1;
>t ninusi_mastert%ROWTYPE;
>
>begin
>for t in select * from ninusi_mastert where ninusi_code=code loop
> return next t.ninusi_code || '','' || t.ninusi_name;
>end loop;
>return;
>end;
>' language plpgsql
>========================================================
>
>これをPHP+PearDBから呼び出そうと思い以下のように作成し、
>IE6.0で呼び出しました。
>しかし"接続完了"としか表示されず結果が何も表示されませんでした。
>functionの呼び出し方が悪いのでしょうか?
>行を返す場合の結果の受け取り方が悪いのでしょうか?
>よく分からなくなりました。
>=========================================
><html>
><head>
><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
><title>contest</title>
></head>
><body>
><?php
>require_once("DB.php");
> $db_string="pgsql://postgres:''@koyama/hanbaidb";
> $db=DB::connect($db_string);
> if (DB::isError($db)){
>  die($db->getMessage());
>} else {
> print("接続完了");
>$parm=651;
>$sql="select * from f3(" . $parm . ")";
>$res=& $db->query($sql);
>
>while($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
>if (DB::isError($result)) {
> die($result->getMessage());
>}
>echo $row[0] . "\n";
> }
>}
>?>
></body>
></html>
>=================================================
>"while"以降に問題がありそうなのですが、
>よろしくお願いします。
>
>
>;
>
>_______________________________________________
>PHP-users mailing list  PHP-users @ php.gr.jp
>http://ns1.php.gr.jp/mailman/listinfo/php-users
>PHP初心者のためのページ - 質問する前にはこちらをお読みください
>http://www.php.gr.jp/php/novice.php3


§─────────────────────────§
§ 有限会社ギャップス               §
§ WEBシステムからゲーム開発までご相談随時受付!§
§      http://www.gaps.co.jp/        §
§ 東京都千代田区猿楽町2−2−3 NSビル802 §
§ TEL:03-3292-5330 FAX:03-3292-5332       §
§                         §
§  山崎 高敬 (t_yamazaki @ gaps.co.jp)      §
§  携帯: 080-3170-3352 (mazak @ t.vodafone.ne.jp) §
§─────────────────────────§


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