2011-08-17 6 views
0

계정 "A"와 계정 "B"의 두 가지 계정 유형이있는 웹 사이트의 로그인 스크립트 (HTML, PHP 및 MYSQL에서) 작업 중입니다. 지금은 사용자가 어떤 유형의 계정을 선택하도록 할 라디오 선택이 있습니다. 하지만 로그인 화면을 약간 지우고 라디오 버튼을 완전히 제거하여 헤더에 맞게 로그인 양식을 사용하고 싶습니다.MySQL 하나의 테이블 또는 다른 테이블에서 데이터를 선택할 수 있습니까?

첫 번째 테이블에서 결과 (사용자 이름 및 암호)를 확인하고 결과가없는 경우 다음 테이블 (사용자 이름 및 암호)을 확인한 다음 일치하는 항목을 찾으면 특정 계정으로 보냅니다 페이지?

요컨대, 라디오 버튼이 필요 없다는 것을 알고 싶습니다.

편집 : 나는 오류를 얻을하지 않습니다하지만 문제는 그것이 첫 번째 테이블에서 선택입니다 : 여기에 내 코드입니다 :

$q = "SELECT varone, vartwo 
    FROM tablea 
    WHERE (user_email='$e' AND pass=SHA1('$p')) 
    UNION 
    SELECT varthree, vartwo 
    FROM tableb 
    WHERE (contact_email='$e' AND pass=SHA1('$p')) 
    ";  
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc)); 
+0

왜 수동 검사를 수행하지 않습니까? – JohnBrighton

+1

여기에 두 센트를 던지기 만하면됩니다. 데이터베이스에'account_type'이라는 컬럼을 설정하는 것이 훨씬 쉽지 않을까요? –

+0

if else 문을 시도했지만 더 복잡하고 오류가 계속 발생했습니다. MySQL의 얇은 조합은 내가 찾고있는 궤도에있는 것 같습니다. –

답변

1
SELECT 'first' AS source, ... 
FROM firstable 
WHERE (username = $user) and (password = $password) 

UNION 

SELECT 'second' as source, ... 
FROM secondtable 
WHERE (....) 
결과가 어디에서 왔는지

그럼 간단하게 체크를하여 암호.

if ($row['source'] == 'first') { ... came from first table ... } 

정확하게 동일한 사용자 이름/암호 쌍이 두 테이블에 나타나지 않는다고 가정하면 작동해야합니다.

+0

고마워요! 나는 그것을 밖으로 시도 할 것이다! –

+0

이 변형이 효과적입니다! 고마워, 나에게 많은 두통을 저장! –

0
select * from table_A where id = 6 union select * from table_b where other_id = 6; 
관련 문제