2012-03-23 2 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!"; 

} 
} 

사용자가 내 데이터베이스에 이미 있는지 확인하고 싶습니다.PHP 사용자가 이미 체크했습니다

확인 쿼리가 있는지 확인 : 그는 내가 종료 할 존재하는 경우 그가 존재하지 않는 경우, 내가

+3

무엇이 질문입니까? –

+0

빠른 시일 내에 코드가 원하는대로 코드를 작성해야합니다. 어떤 문제가 발생 했습니까? –

+0

나는 그것을 만들고 싶습니다만, 그렇지 않습니다. 어떤 제안? – user1287949

답변

0

아래 시도 사전에

감사합니다 (ELSE 문 아래) 위의 코드를 실행하고 싶습니다 행을 반환하거나 괜찮습니다.

변화 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

에 선택은 특정 오류 코드가 발생합니다. 두 쿼리 (+ INSERT를 선택)을 사용한다면 여러분의 스크립트는 단순히 당신이, 예를 race conditions을 처리했다,

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)
  • 가 삽입 ID를 가져 오기 사용하여 ON DUPLICATE KEY UPDATE 절과 INSERT INTO tbluser 쿼리를 수행 할 사용자 이름의 고유 인덱스를 만들 http://docs.php.net/function.mysql-insert-id
  • 두 번째 삽입을 참조 미리 쿼리에서 insert_id를 사용하십시오.
관련 문제