2012-10-02 104 views
1

在我的代碼中,我想通過名字,姓氏和電子郵件字段來搜索朋友。 現在我想匹配從數據庫表字段name.also確切的字符串,我想顯示fields.also我想獲得搜索數據的ID所以然後我會顯示關於該人的完整描述後,我可以做到這一點。 感謝任何幫助。 我嘗試過。在數據庫表中搜索字符串表格多列

$term=$_POST['find']; 
$searchquery=mysql_query("select firstname,lastname,email from account where output LIKE %$term%"); 

回答

2

您正在尋找:

SELECT id, firstname, lastname, email 
FROM account 
WHERE firstname LIKE %$term% 
OR lastname LIKE %$term% 
OR email LIKE %$term% 
LIMIT 20 

請注意,你的方法是潛在的危險,你要保護你的$term變量:

$term = mysql_real_escape_string($_POST['find']); 

安蘇注意mysql_ *系列功能正在棄用的過程,你應該看看PDO或mysqli。

編輯:

增加了一個限制,因爲我不認爲你要恢復所有數據庫表,如果$term包含任何內容。

+0

好兄弟的不錯,但我怎麼可以顯示的字段,以及如何確定哪些字段是匹配的數據庫。 – pratik

+0

我使用這種類型顯示它是否給我error.pls檢查它 – pratik

+0

$ resultsearch = mysql_query($ searchquery); \t而($ searchdata = mysql_fetch_array($ resultsearch)) \t {?> <表邊界= 「0」 CELLPADDING = 「0」 CELLSPACING = 「0」 ALIGN = 「中心」> \t ​​ <? php \t \t \t echo $ searchdata ['firstname']; \t \t \t echo $ searchdata ['lastname']; \t \t \t echo $ searchdata ['email']; \t \t \t?> \t \t \t \t <?PHP} } ?> – pratik

1

查詢應該是這樣的

$searchquery=mysql_query("select id,firstname,lastname,email from account where firstname LIKE '%$term%' OR lastname LIKE '%$term%' OR email LIKE '%$term%'"); 

,如果你想在這兩種3列(名字,姓氏,電子郵件)進行查詢。

1

更改您的查詢以獲取您想要顯示的所有需要​​的信息,並檢查您對該字詞的所在位置。就像這樣:

select id, firstname, lastname, email /*, ... other fields */ from account where firstname LIKE '%$term%' OR lastname LIKE '%$term%' OR email LIKE '%$term%' 
1
select firstname,lastname,email from account where concat_ws(' ',firstname,lastname,email) LIKE %$term%" 

會像對待單一領域,因此這三個領域將更快

+1

fistname barjo lastname hnick,尋找約翰會匹配?如果這真的很快,爲什麼不實際,也許使用concat_ws。我會測試它,謝謝你的提示。 –

+0

是的... concat_ws與分隔符應該工作的空白 – hangman