mysql:5924
From: MAO <MAO <mao@xxxxxxxxxx>>
Date: Mon, 05 Aug 2002 19:59:19 +0900
Subject: [mysql 05924] 二重登録を防ぐには?
こんにちは、maoと申します。 現在、ユーザ登録のDBをPHP4.2.2+MySQL3.22.32にて開発しております。 ユーザを登録する際に、 メールアドレスで判断をして、すでに登録されているユーザの場合は 登録させないように下記のように処理をしております。 $SQL = "select mail from user_tbl where mail = $email"; $result = mysql_query($SQL,$ConnectID); if ($result1 == FALSE){ $ErrMSG .= "データの取得に失敗しました<BR>"; }else{ if($row = mysql_fetch_array($result)){ $ErrMSG .= "すでにこのメールアドレスは登録されています<BR>"; }else{ $SQL = "insert into user_tbl ....... ";#省略 $result = mysql_query($SQL,$ConnectID); } } しかし、上記のような処理をしても、登録ボタンの連続クリックなどを された場合に、2重登録されてしまう場合があります。 オラクルで開発を行っていたときは、トランザクション処理を 利用していたのですが、MySQLにはトランザクション処理ないと聞いています。 皆様はどのようにして対応されているのでしょうか? Maxを使えばトランザクション処理ができる事は調べましたが、 すでにMySQLがインストールされた環境のため、 MySQLの利用が必須になっています。 現在JavaScriptで連続登録ができないようにはしていますが ユーザ環境により完璧ではありません。 また、UNIQUE (mail)も検討はしていますが、 insert時にSQLのエラーを返すのではなく、 insert前に処理をしたいとおもっております。 以上、よろしくおねがいいたします。 mao[mao@xxxxxxxxxx]
-> 5924 2002-08-05 19:59 [MAO <mao@xxxxxxxxxx>] 二重登録を防ぐには? 5925 2002-08-05 20:17 ┗["Yuya.Nishida." <yuy] 5927 2002-08-06 09:58 ┗[MAO <mao@xxxxxxxxxx>] 5928 2002-08-06 18:43 ┗["Hiroaki,Sakuma" <sa]