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]