アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP4.3 + PEAR + PostgreSQL + Apache + Linux/Debian Sarge を使っています。

重複を許さないデータを登録するために、既に登録されているデータを確認しつつ、テーブルに新データを追加する方法についてお尋ね致します。

下記の流れを考えています。

(1)既に登録されているデータを画面に表示する。
 ↓
(2)フォームを利用してユーザーが新データを入力する。
 ↓
(3)フォーム入力を受信して、新データをテーブルに追加する。

この場合、(1)でのデータ表示から(3)のデータ追加登録までトランザクションをかけておかなければ、他のユーザーが同じデータを追加登録してしまう恐れがあるかと思います。

一方、(1)においてデータベースに接続した時に得たインスタンス(?)を
$_SESSION['db'] = DB::connect(DSN)
          (PEARを利用しています)
のようにしてセッション変数に保存しても、(3)の処理に引き継ぐことができませんでした。

このような処理はどのように行えばよいのでしょうか。

A 回答 (2件)

がると申します。


データベースに接続した時に得たインスタンス(DBハンドル、と呼称することが多いです)はセッションをまたいでは引き継げません。
画面設計を見直すことをお勧めいたします。
    • good
    • 0
この回答へのお礼

がる様、ありがとうございます。
ド素人なりに考えてみます。
私にとっては、DBハンドルはセッションをまたげないことがはっきりしました。

お礼日時:2006/03/05 20:06

表示して入力して更新するまでトランザクション


をかけるなんてとても稼動に耐えられないでしょう。

更新時にトランザクションで再検索をかけて
更新し、駄目な場合はエラーを返すので十分だと
思います。
    • good
    • 0
この回答へのお礼

yambejp様、ありがとうございます。
御助言を参考にさせて頂きます。

お礼日時:2006/03/05 20:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!