[PHP-users 14874]Re: [PHP-users14665]PEARでクエリが実行されるときとされない時がある

Youichi Iwakiri yiwakiri @ st.rim.or.jp
2003年 4月 24日 (木) 15:17:11 JST


いわきりです

sorako yamamoto wrote in <Sea2-F325COCHT8TXx3000027dd @ hotmail.com> :
>// insert updateを実行させる場合。
>function execUpdate( $sQuery )
>{
>	$DNS = "pgsql://unix()/Test" ;
>	$objCon = DB::connect( $DNS, true);	// DBへ接続
>
>	if ( DB::isError($objCon ) ) {
>		die( "接続エラー" );
>	}
>	$objCon->setErrorHandling( PEAR_ERROR_CALLBACK, "myDBErrorHandler" );
>
>	// トランザクションの開始
>	$this->db->query("BEGIN") ;
>	$objRs = $objCon->query( $sQuery );
>
>	// コミット
>	$this->db->query("COMMIT") ;
>	return ;
>}

ソースは、よく見てなかったのですが、
        $this->db->query("BEGIN") ;
        $this->db->query("COMMIT") ;
って、なにものですか?

Classオブジェクトで無いものに$thisは使えないような。

それ以前に、
$objCon = DB::connect()するなら$obj->disconnect()と一対で。
$objCon = DB::connect()したら、DB::isError($objCon)で検証
$objRs = $objCon->query($sQuery)したら、DB::isError($objRs)で検証

#余談
DB::connect()って、pg_pconnectを内部で読んでるんでしたっけか?
だったら、トランザクションの途中で問題があった場合、明示的に
ROLLBACKをかけるか、disconnectで、PostgreSQLとのコネクションを
切断しないかぎり、以降のSQL全てが
current transaction is aborted, queries ignored until 
end of transaction block
と、怒られるように思えます。

-- 
Youichi Iwakiri



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