2012-03-23 1 views
0
$sql = 'SELECT * FROM tbluser, tblfile WHERE tbluser.Username = "'.$user.'"'; 
if ($result = mysql_query($sql)) { 
if(mysql_num_rows($result)) { 
    echo'User already exists'; 
    exit; 
} 
else 
{ 
mysql_query('INSERT INTO tbluser 
(`Username`, Password, BossID) VALUES ("'.$user.'","'.$passwd.'","'.$boss.'")')or die(mysql_error()); 


$sqlq = 'SELECT * FROM tbluser, tblfile WHERE tbluser.Username = "'.$user.'"'; 
$res = mysql_query($sqlq); 
while($row = mysql_fetch_array($res)){ 
mysql_query('INSERT INTO tbluser_file 
(`FileID`, UserID) VALUES ("'.$row['FileID'].'","'.$row['UserID'].'")')or die(mysql_error()); 
} 
echo "Admin Added!"; 

} 
} 

ユーザーが既にデータベースに存在するかどうかを確認したいと思います。彼は私が終了したいが存在する場合は、彼が存在しない場合、私は(ELSE文の下)上記のコードを実行したいと思い、事前PHPユーザーがすでに存在しています。

+3

ここで質問は何ですか? –

+0

一見すると、あなたのコードはあなたが望むことをするはずです。あなたはどんな問題に直面していますか? –

+0

私はそれを動作させたいですが、そうではありません。助言がありますか? – user1287949

答えて

0

おかげで以下試してみてください。

がクエリであることを確認してください行を戻してもOKです。

変更if(mysql_num_rows($result))あなたがcreate a unique index列にテーブルに既に他のレコードとユーザー名に同じ値で挿入をユーザー名場合if(mysql_num_rows($result) > 0)

$sql = 'SELECT * FROM tbluser, tblfile WHERE tbluser.Username = "'.$user.'"'; 
if ($result = mysql_query($sql)) { 
if(mysql_num_rows($result) > 0) { 
    echo'User already exists'; 
    exit; 
} 
+0

それはまだ動作しません。クエリの結果は – user1287949

+0

です。コンソールでクエリを実行しようとしましたか? –

+0

よろしくお願いします。自分自身で問題を解決しました。私は自分のSQLからtblfileを削除しましたが、うまくいきました。 $ sql = 'SELECT * FROM tbluser WHERE Username = "'。$ user。 '"'; – user1287949

0
$sql = 'SELECT COUNT(*) as COUNTUSER FROM tbluser, tblfile WHERE tbluser.Username = "'.$user.'"'; 
while ($myRow= mysql_fetch_array($sql)) { 
    $counterUser=$myRow[COUNTUSER]; 
} 
if ($counterUser>0) 
{ 
    echo 'User already exists'; 
    exit; 
} 
+0

は '$ myRow ['COUNTUSER']' – Raptor

1

にspecficエラーコードが発生します。あなたはrace conditionsを処理しなければならなかった2つのクエリ(+ INSERTを選択)、例えばを使用する場合は、あなたのスクリプトは、単純に、新しいレコードを挿入すると、特定のエラーコードを処理するために

define('ER_DUP_KEY', 1022); 

// pre-condition: $user, $passwd, $boss have been prepared for usage within an sql statement 
$query = sprintf(" 
    INSERT INTO 
     tbluser 
     (`Username`, `Password`, `BossID`) 
    VALUES 
     ('%s', '%s', '%s') 
", $user, $passwd, $boss); 

if (!mysql_query($query)) { 
    switch(mysql_errno()) { 
     case ER_DUP_KEY: 
      // handle duplicate user name 
      break; 
     default: 
      // handle other errors 
    } 
} 

ような何かを試すことができますテーブルをロックします。


編集:暗黙の参加FROM tbluser, tblfileが見つかりませんでした。
その場合、INSERT ... ON DUPLICATE KEY UPDATE、espに興味があるかもしれません。

テーブルにAUTO_INCREMENT列があり、INSERT ... UPDATEが行を挿入する場合、LAST_INSERT_ID()関数はAUTO_INCREMENT値を返します。ステートメントが代わりに行を更新する場合、LAST_INSERT_ID()は意味を持ちません。ただし、LAST_INSERT_ID(expr)を使用してこの問題を回避できます。 idがAUTO_INCREMENT列であるとします。更新に意味のあるLAST_INSERT_ID()を作成するには、次のように行を挿入します。
部分。すなわち:

  • は、LAST_INSERT_ID(expr)は
  • を使用してON DUPLICATE KEY UPDATE句を含むINSERT INTO tbluserクエリがhttp://docs.php.net/function.mysql-insert-id
  • が第二のインサートを行う参照、挿入IDを取得します。ユーザー名
  • のためのユニークなインデックスを作成します事前クエリからのinsert_idを使用して
関連する問題