2011-09-12 11 views
0

林甚至不知道這是可能的(林新的PHP)如何在MySQL查詢

不管怎麼說,我想要做的是這樣的毗連:

mysql_query("SELECT * FROM user_table WHERE concat(username,'@',domain)='$username' LIMIT=1"); 

好,所以$用戶名是由用戶提交的用於搜索數據庫以檢查它們是否存在的電子郵件地址。在user_table用戶名不存儲在一個列中,他們存儲在幾個與域和實際的用戶名是分開的。

例如用戶名可能是鮑勃和域可能是website.com.au

然後,當用戶想要搜索該用戶的類型[email protected]

這正好到上面的查詢。

那麼,它應該工作與否?如果不是,我該如何做這項工作或者你對我有什麼建議?

+0

歡迎來到Stack Overflow。您可以使用工具欄按鈕格式化源代碼。這次我爲你做了。 –

+1

'Manning - Bobby Tables in Action':P –

+0

'concat'從我擡頭看起來很正確。嘗試刪除'來自$的用戶名。 我的PHP知識也是有限的,但這是我第一件嘗試 –

回答

0

可能措辭略微錯誤的問題。

反正這是我做了什麼"SELECT * FROM virtual_user WHERE concat_ws('@',username,domain)='$username'"

我不再需要使用LIMIT = 1,我可能永遠也需要爲表中的所有結果都是個人,所以它永遠只返回的限制1或根本沒有。

它在我看來並不慢,但是我再也不確定要比較它了。我們有大約7000多條記錄可以分類。無論如何要讓它告訴你查詢需要多長時間才能完成?

我想把用戶名和域名都放到一個索引字段中,但是它用於後綴郵件服務器,我不允許或者使用遊戲來處理它使用的查詢。特別是不在實際處理郵件的正常運行的服務器上。

0

正如BobbyJack所說,這是一種查找用戶記錄的緩慢方式。

如果不能在單個列電子郵件地址存儲和放置索引該列,在PHP分割字符串,使您的查詢:

SELECT * FROM user_table WHERE `username` = '$username' AND `domain` = '$domain' 

然後,您可以創建唯一索引結合域+用戶名所以你不需要限制1