2013-12-12 60 views
0

例如,我有一個表名'user'。我在這個表格中有'名字'和'家族'字段。用一個值查詢兩個組合字段

我使用jQueryUI自動完成頂級搜索在我的網站上搜索的人就像Facebook一樣。 jQueryUI的的

例如我使用(半碼):

$("#mainsearch").bind("keydown", function(event) { 
    if (event.keyCode === $.ui.keyCode.TAB && 
    $(this).data("ui-autocomplete").menu.active) { 
     event.preventDefault(); 
    } 
}) 

而且我有PHP文件得到搜索結果代碼:

$name = $_GET['term']; 
$results = array(); 
$s = qselectall("select * from user where(name LIKE '%$name%' or family LIKE '%$name%') limit 15",$db); 
while($f = mysqli_fetch_array($s,MYSQLI_ASSOC)){ 
    if($userid != $f['id']){ 
     $name = $f['name'].' '.$f['family']; 
     $url = $siteurl.$f['username'].'/'; 
     array_push($results, array('id' => $f['id'],'value' => $name,'url' => $url)); 
    } 
} 
echo json_encode($results); 

但它有1個問題。 用戶無法使用姓名和家人進行搜索。 他們必須在輸入框中插入姓名或家庭才能工作。

是否有任何用於搜索的SQL代碼LIKE where(name and family = $ text)?

例如:
我們有一個名字叫「亞歷克斯」,姓氏叫「亞歷克斯」的人。 因此,用戶搜索'亞歷克斯alexian',但他們得不到結果爲什麼?
因爲沒有名字而不是家庭在表格中='alex alexian'。 所以他們必須搜索「alex」或「alexian」才能使用。

+0

你想一下,在您的查詢,更改字'或'的'詞和' – Jessica

+0

請理解我的問題的姓名和家庭是在mysql中兩場 - 如果u搜索所需的搜索有人的名字='亞歷克斯'和姓氏='亞歷克斯'所以你把搜索亞歷克斯亞歷山大所以​​不是名字和家庭在表=亞歷克斯alexian –

+0

參見:http://stackoverflow.com/questions/3183778/how-can- i-search-for-multiple-terms-in-multiple-table-columns – Jessica

回答

1

嘗試這種情況:

SELECT * FROM user 
WHERE concat_ws(' ',name,family) 
LIKE '%$name%'; 

concat_ws函數連接多個列 '與分離器'(_ws)。在這種情況下,分隔符是一個空格('')。有關更多信息,請參閱MySQL documentation

演示:http://www.sqlfiddle.com/#!2/aac0f/8

+0

而且你有全表掃描。 – Mihai

+0

@Mhaihai,是的,它不是最漂亮的解決方案。我建議使用FULLTEXT索引,最好是第三方搜索引擎,如Sphinx或Lucene。 – TheCarver