使用一个值查询两个组合字段

时间:2013-12-12 21:44:29

标签: mysql sql

我有一个表名'user'。我在此表中有字段'name'和字段'family'。

我在我的网站中使用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);

但它有一个问题。 用户无法搜索姓名和家人。 他们必须在输入框中插入名称OR系列才能工作。

是否有搜索LIKE的SQL代码(name和family = $ text)?

例:
我们的名字为'alex',姓氏为'alexian'。 所以用户搜索'alex alexian'但他们没有结果为什么?
因为不是名字而不是表格中的家庭='alex alexian'。 所以他们必须搜索'alex'或'alexian'才能使它工作。

1 个答案:

答案 0 :(得分:1)

试试这个:

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

concat_ws函数将多个列连接到分隔符'(_ws)。在这种情况下,分隔符是空格('')。有关详细信息,请参阅MySQL documentation

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