2010-10-02 48 views
0

我希望能夠檢查我的email是否等於$e,但我的電子郵件位於另一個表info中,我該如何解決此問題?MySQL多表問題?

這是我的MySQL查詢到目前爲止。

"SELECT password, salt FROM users WHERE (email = '" . $e . "' OR username = '" . $e . "') AND active IS NULL" 

回答

0

使用JOIN:

SELECT users.password, users.salt 
FROM users 
JOIN info 
ON info.id = users.info_id 
WHERE (users.email = $e OR info.username = $e) 
AND users.active IS NULL 

注意:您可能需要修改取決於你如何結構化你的架構開始ON行。如果您不確定要進行哪些修改,請更新您的問題以包含SHOW CREATE TABLE usersSHOW CREATE TABLE info的輸出。

此外,您可能還想仔細檢查代碼中是否存在SQL注入漏洞。使用參數是一種很好的做法,或者至少確保字符串正確escaped。從代碼提取中不清楚您是否正確轉義。

+0

什麼是SQL注入評論? – HELP 2010-10-02 11:55:37

+0

@needHelp,它是關於[SQL注入](http://en.wikipedia.org/wiki/SQL_injection),如果你問它是什麼,那麼你的網站可能面臨很大的風險。 – 2010-10-02 11:57:03

+0

@Darin Dimitrov快速跳到結論相信我我正在使用淨化器,並逃脫我的用戶輸入的數據。 – HELP 2010-10-02 11:59:18