[pgsql-jp: 27199] Re: pg_execが2度実行されてしまう現象

桝形 誠二 s.masugata @ digicom.dnp.co.jp
2002年 8月 29日 (木) 19:01:26 JST


こんにちわ、桝形です。

> > 他の方も書いていますが,何を持って「2度実行された」と判断したのでしょ
> > うか?
> 
> PHPからは1度のpg_exec()でinsertを実行しているのですが、
> psqlを使って、select * from foo; として結果を見ると
> 
>     id  |  name
> -------------------
>      1  |  test1
>      2  |  test1
> 
> のように、同じnameのデータでidだけは更新されたレコードが
> 2つ登録されてしまします。

下記で試してみました。

Pg.html:
<html>
<body>
<form action="Pg.php" method="POST">
<input type="text" name="name">
<input type="submit">
</body>
</html>

Pg.php:
<?
dl( "pgsql.so" );

 $name = $_POST[name];
 $con = pg_connect( "host=localhost port=5432 dbname=XXXX" );

 $sql = "insert into foo(name) values('$name')";
 $rtn = pg_query($con, $sql);
 $sql = "select currval('foo_id_seq')";
 $rtn = pg_exec($con, $sql);

 $new_id = pg_result($rtn, 0, 0);

echo $new_id;
?>

で、やってみたのですが、再現できませんでした。
ゆっくりと単発アクセスを繰り返して、処理が終われば前の
画面に戻って表示されたIDを入力して〜という工程を200回
程度繰り返したのですが再現できず、疲れてやめてしまい
ました。。。これくらいじゃ足りないですか?(^^;

また、本当にバージョンを上げてから現象がでるようになった
のでしょうか?

PHPで処理したページを、ブラウザで更新すると同様の現象に
なるので、おそらくそんな感じな気もするのですが。。。

[環境]
OS         : RedHatLinux6.2J
PHP        : 4.2.2
PostgreSQL : 7.2.2
Apache     : 1.3.26

7.2.2がリリースされていますが、このMLで話題になりません
よね。。。(気のせいか見てないだけ?)
あまり関係がないというより影響が少ないのでしょうか?

http://www.jp.postgresql.org/news.html
_______________________

  桝形 誠二( Masugata Seiji )
  E-Mail : s.masugata @ digicom.dnp.co.jp

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄




pgsql-jp メーリングリストの案内