2012-09-07 22 views
0

我想構建一個SQL查詢來搜索我的數據庫的用戶。它應該幫助用戶在我的網站上找到其他用戶以查找朋友。PHP的SQL語句來搜索用戶名databse

我做了一些研究,因爲我知道我不想:

$query = "SELECT userName, userID FROM user WHERE userID = $userName "; 

因爲它不會是一個有效的搜索,如果他們不得不輸入用戶的確切名稱中找到他們。

在做了一些研究之後,我決定試試前面和後面帶有%符號的類似術語,以便它可以是讓我們在前後說數字的名稱,它會顯示出來。

我在網上找到的格式像這樣的例子:

$query = "SELECT userName, userID FROM user WHERE userID Like '%{$userName}%' "; 

但是當我執行此查詢,而在M Y網站實現的,我碰到了久違了許多成果的IT問題。它返回的搜索結果中沒有包含任何內容。

我也嘗試了上面的括號中的搜索查詢,因爲我不明白爲什麼我需要它們,但我得到了相同的結果。

有關如何使用上述命令查詢使搜索更嚴格的任何建議?

或者我應該如何搜索我的數據庫的用戶朋友的任何其他建議?

+1

你有你的LIKE子句中的用戶ID和你匹配對爲$ userName.Why所以變量?它應該是其中username LIKE「%$ USERNAME%」和我我不確定你爲什麼在$ userName附近使用大括號。 –

+2

別忘了['Bobby Tables'](http://bobby-tables.com/) – Nemoden

+0

@ techie_28我以爲你的改變會破解它。 Def需要使其userName不是userID。但我仍然得到如上所述的結果。 – Mike

回答

1

% sign用於通配符。因此,如果$userName = 'apple'您的查詢將匹配apple,applepiecrabapple而不是appl

如果您想完全匹配,請刪除%s或LIKE。

0

考慮串

Apple iApple Apple Product

如果鍵入Apple

LIKE '%{$ USERNAME}%'「

返回:將返回你AppleiAppleApple Product
原因:在兩側的%表明它會之前,你的搜索詞後

像 '{$ USERNAME}%'「

返回接受任何文字:請問回覆您AppleApple Product
原因:右側的%表示它會接受您的s後的任何文本目錄操作搜索項

LIKE '%{$ USERNAME}'「

返回:將返回AppleiApple
原因:在左側的%表示它將接受之前的任何文字的搜索詞

像 '{$ USERNAME}'「

返回:將返回Apple
原因:沒有%將限制搜索的搜索項

進一步

我相信您的查詢應該是

 
    $username = mysqli_real_escape_string($userName); 
    $query = "SELECT userName, userID FROM user WHERE userName Like '%{$username}%'"; 
+0

我這樣做: $ queryF =「SELECT userName,userID FROM user WHERE userName Like'%{$ userName}%'」; 它返回了很多不應該的名稱 – Mike

+0

什麼是您的搜索和結果。你可以發佈他們嗎? – Deepak

+0

使用此查詢: $ queryF =「選擇用戶名,userID從用戶WHERE用戶名像'%{$ userName}%'」; 我搜索:馬克 我也得到: 啤酒花 測試 傑森 Bekka 馬克 等,包括其他沒有名稱標記在它在所有。 – Mike

1

請試試這個。也就是爲什麼您使用大括號..

$query = "SELECT userName, userID FROM user WHERE username Like '%$userName%' "; 
+0

正如我的問題所述,我已經嘗試過,沒有括號。 – Mike