[PHP-users 22553]Re: autoCommitについて

komura komura @ ma9.seikyou.ne.jp
2004年 7月 9日 (金) 18:54:39 JST


komura です。

On Fri, 09 Jul 2004 17:45:17 +0900
Hiroyuki Yokoyama <hiro @ oaksway.com> wrote:

> 現在PHP4+PostgreSQL7.2.3を使用して開発を行っているのですが
> autocommitの引数をfalseで設定して実行すると
> autocommitの呼び出しから何も応答がありません。
> ご存知の方がいましたら、ご教授の程よろしくお願いします。

下記のソースコードを見たところでは、autocommit は関係ないと思います。


> 下記にソースの一部を記載させていただきます。

まず、開発中は @ を付けて、エラーを出力を抑制するのは止めておいた方が
良いと思います。@ を外して、エラーが表示されないかを確認してください。


> ------
> $i_dsn = 'pgsql://hogehoge: @hostname/dbname';

DSN は単なるサンプルだと思いますが、本当に正しい書式かどうかを確認して
ください。


> $this->db = @DB::connect( $i_dsn ) ;

$this->db に結果を入れているということは、このコードはクラスの中で
実行されているということでしょうか?

おそらく、ここで返される $this->db は DSN が正しくないか、データベースの
接続に失敗したため、PEAR のエラークラスが返ってきているのではないかと
思います。


> if( @DB::isError( $db ) ){  

$db は、$this->db の間違いでしょうか?
$db が別で定義されていない場合は、この if 文は常に FALSE になりますので、
下の接続失敗の部分は実行されません。


>  // 接続失敗
> }else{
>  // 接続成功
>  $res = @$this->db->autoCommit( false ) ;

おそらく、ここで $this->db->autoCommit() というメンバ関数がないため、
実行が中断されていると思います。


> }
> ------

-- 
komura <komura @ ma9.seikyou.ne.jp>


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