我有一个表名'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'才能使它工作。
答案 0 :(得分:1)
试试这个:
SELECT * FROM user
WHERE concat_ws(' ',name,family)
LIKE '%$name%';
concat_ws
函数将多个列连接到分隔符'(_ws)。在这种情况下,分隔符是空格('')。有关详细信息,请参阅MySQL documentation。