2012-08-14 121 views
0

我有兩個選擇語句合併結果

SELECT username, password FROM users WHERE username='$Uname' 

SELECT email_address FROM users WHERE email_address='$email' 

我可以什麼語句,所以我得到的所有結果一次即

用戶名作爲結果[0],作爲結果[1]的密碼和作爲結果的email_address [2]

解釋bett呃。

我想檢查我的數據庫中是否已經有用戶名記錄,如果是這樣,那麼抓住密碼,然後再檢查密碼是否有email_address的記錄,以確保用戶不被允許擁有重複的用戶名或電子郵件地址。

+0

除非你使用正確的[SQL逃逸(http://bobby-tables.com/php)你祈禱,希望你的用戶永遠鍵入任何可能被解釋爲SQL。這樣的代碼應該**從不**投入生產。 – tadman 2012-08-14 14:24:51

+0

請你多解釋一下。謝謝 – Amanni 2012-08-14 14:41:40

+0

「[email protected]」的電子郵件);掉桌用戶; - ''可能會導致您的應用程序失敗,或者就此而言,任何碰巧包含'''的電子郵件。您絕對必須**轉義進入您的SQL語句的任何和所有用戶提供的數據。如果您使用PHP,請使用PDO或'mysqli'。 **從不**使用'mysql_query'。這是非常危險的。對每一位用戶數據使用佔位符,您不會遇到任何問題。 – tadman 2012-08-14 19:02:43

回答

0

如果您已經知道電子郵件地址(第二個語句變量),那麼您爲什麼要讓語句再次返回?

0

我不知道你正在試圖做的,但什麼......

SELECT u1.username, u1.password, u2.email_address 
from users u1, users u2 
where u1.username='$UName' 
and u2.email_address == '$email' 

考慮到你的第二個查詢只是要回你....

SELECT username, password, '$email' as email_address FROM users WHERE username='$Uname' 
傳遞值
+0

這是註冊頁面,所以我想檢查數據庫中是否已經存在用戶名和電子郵件地址 – Amanni 2012-08-14 14:25:26

+0

u1和u2是什麼意思? – Amanni 2012-08-14 14:26:17

1

我想你想的「或」條件:

SELECT username, password, email_address 
FROM users 
WHERE username='$Uname' or email_address='$email' 

可以使用相關子查詢檢查電子郵件有:

SELECT username, password, email_address 
     (select (case when count(*) > 0 then 'SHARED' else 'UNIQUE' end) 
     from users u2 
     where u.email_address = u2.email_address and 
       u.username <> u2.user_name 
    ) as SharedOrUnique 
FROM users u 
WHERE username='$Uname' or email_address='$email' 
+0

我認爲這與我所尋找的更接近,但我想獲取該用戶名的用戶名和密碼,然後運行檢查以查看該電子郵件地址是否已存在於我的數據庫中。 – Amanni 2012-08-14 14:32:11

+0

我很困惑。 。 。電子郵件地址從哪裏來?它不在用戶的記錄中嗎?你的意思是,電子郵件地址是否在另一個記錄上? – 2012-08-14 14:36:37

+0

是的,如果我已經在我的數據庫中有記錄 – Amanni 2012-08-14 14:38:08

1

聯合查詢合併多個SELECT查詢的結果。

SELECT name, price, warranty_available, exclusive_offer 
FROM Products 
UNION ALL 
SELECT name, price, guarantee_available, exclusive_offer 
FROM Services;