[PHP-users 4975] Re: バグ?仕様?複数のpostgre 接続リソースを定数にできない?
Naofumi Kondoh
php-users@php.gr.jp
Fri, 25 Jan 2002 14:44:20 +0900
ソフト工房の近藤です。
Yasuo Ohgaki wrote:
>
> 大垣です。
>
> Y.Watanabe wrote:
> > わたなべです。
...略...
> > <?php
> > define ("DBCONN01",pg_connect("dbname=db01 user=username"));
> > pg_exec("DBCONN01","select * from hogehoge");
> > ?>
> > のように定数としてのpostgreリソースがひとつしかない場合には
> > 正常に作動します。
>
> これが動作する事自体がおかしいです。確認してみます。
> (多分、デフォルトコネクションのハンドリングがおかしい為と思います)
>
> ZendEngineの動作もおかしいのでこちらも確認してみます。
define ("DBCONN01",pg_connect("dbname=db01 user=username"));
は、エラー処理もんだいと、コードが読みにくいので
推奨できないですが、一度変数に入れて、
$DBcon1 = pg_connect("dbname=idb") or die('ERROR');
define ("DBCONN01", $DBcon1);
とするなら、正しい使い方ではないのでしょうか。
> > しかし、
> > <?php
> > define ("DBCONN01",pg_connect("dbname=db01 user=username"));
> > $dbconn02 = pg_connect("dbname=db02 user=username");
> > pg_exec(DBCONN01,"select * from hogehoge");
> > pg_exec($dbconn02,"select * from fugafuga");
> > ?>
> > のように、ふたつの接続リソースの片方を定数として、もう片方を
> > 通常の変数とした場合にも、やはりWEBサーバが反応しなくなります。
>
> pg_exec()の第一引数はPostgreSQLのコネクションリソースを必ず
> 渡してください。
>
> このメールの様にdefineをマクロの様に使ったコードが動くこと自体
> がバグです。
私の理解では、所謂マクロではなく、pg_connect() の
返信値(コネクションリソース) を READ ONLY の変数の
かわりに define で定数にしているんだと思います。
このメリットは、
(1)コネクション値を変更できなくさせる
(READ ONLY の const 変数として扱える)
(2)global 宣言が不要になる
ではないかと推察します。
PHP 4.04p11 では、下記コードで動きます。
この使い方なら正しいと思いますが、如何でしょう。
pg_exec() などで使う コネクションリソース値は、値い
渡しだと思いますが違いますか。参照渡しでリソース値が
変更可能でなければならないとしたらかえっておかしいと
思います。
# 私の理解不足ならご指摘賜わりたく。
<?php
$DBcon1 = pg_connect("dbname=webpg") or die('ERROR');
$DBcon2 = pg_connect("dbname=kon") or die('ERROR');
define ("DBCONN01", $DBcon1);
define ("DBCONN02", $DBcon2);
echo "DBCONN01 = ".DBCONN01." : DBCONN02 = ".DBCONN02." <hr>";
$exe1 = pg_exec(DBCONN01,"select * from zipmst limit 5;") or die ('err');;
$exe2 = pg_exec(DBCONN02,"select * from aa limit 5;") or die ('err');;
echo "EX1: [ ".implode(' ][ ', pg_fetch_row($exe1, 0)). " ]<hr>";
echo "EX2: [ ".implode(' ][ ', pg_fetch_row($exe2, 0)). " ]<hr>";
pg_close(DBCONN01);
pg_close(DBCONN02);
?>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
PostgreSQL+PHP ソースコードジェネレーター セミナースライド
http://www.shonan.ne.jp/~nkon/cslpg.a.semi/
http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/