[PHP-users 5622] Re: トランザクションについて。

kaga php-users@php.gr.jp
Fri, 22 Feb 2002 10:54:52 +0900


お世話になってます。
自分の質問に答えてくれた三村さん、近藤さんアドバイスして
頂きありがとうございます。

近藤さんが言っていたCOMMIT文を単独した方がと書いてありました
が三村さんが書いてくれたサンプルのようにするって事ですか?

> $conn=pg_connect("host=dbhost user=dbuser password=password
> dbname=dbname port=5432");
> $query="BEGIN;";
> $result=pg_exec($conn,$query);
> $query="INSRET INTO ....;";
> $result=pg_exec($conn,$query);

> $query="COMMIT;";
         ↑
        ココ

> $result=pg_exec($conn,$query);
> pg_close($conn);

それともう一つ質問なんですが宜しいでしょうか?
下記のようにINSERTを複数実行する時のpg_freeresult()をドコに
設定すれば宜しいのでしょうか?
pg_freeresult()はSQLの結果を開放する関数じゃないですか?だ
からSQLを実行している分だけ設定すれば良いのでしょうか?

**********************************************************
$DB = pg_connect("", "", "データベース名");

if($DB == false){
 $strMsg = "データベースに接続できません。";
}
else{
 $sSQL = "";
 $sSQL = "INSERT INTO テーブル名(フィールド名, …) ";
 $sSQL = $sSQL . "VALUES (データ1, …);";

 $RS = pg_exec($sSQL);

 if($RS == false){
  $strMsg = "実行に失敗しました。";
 }
 else{
  $sSQL = "";
  $sSQL = "INSERT INTO テーブル名(フィールド名, …) ";
  $sSQL = $sSQL . "VALUES (データ1, …);";

  $RS = pg_exec($sSQL);

      ・
      ・
      ・
      ・

 }
}

pg_close($DB);
**********************************************************

下らないかも知れませんが宜しくお願いします。
では、失礼します。