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

Koyama Manabu sm-bunbun-ll @ mx9.tiki.ne.jp
2005年 2月 2日 (水) 20:30:36 JST


小山といいます。
<環境>
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 メーリングリストの案内