[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 メーリングリストの案内