如何向LIKE查询添加更多选项

时间:2012-11-04 01:38:38

标签: php mysql search search-engine

对于令人困惑的标题感到抱歉,我是新手,不知道该怎么称呼我的问题。 我正在建立(井......)以创建商业列表网站,我找到了这个搜索脚本,它从表中获取结果。所以,我粘贴了它,尝试了它并且它可以工作,但是一次只搜索一个字段,我不能同时搜索两个字段。仅来自字段的数据:“company_name”被重新调整。但是,我需要使其灵活,并将其附加到字段名称'类别'进行搜索,所以,总之我需要PHP搜索两行,即 'company_name'& '类别'字段。

这是脚本,我不知道如何添加其他语法。

       $keywords = preg_split('/[\s]+/',$keywords); 
       $total_keywords = count($keywords); 

         foreach($keywords as $key=>$keyword) {
        $where .= "`company_name`  LIKE  '%$keyword%'   ";
        if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }

问题出在此处:$where .= " company_name LIKE '%$keyword%' ";

如果你需要在这里查看整个脚本,那就是。

        function search_clients($keywords){

$returned_results = array();
$where = "";

$keywords = preg_split('/[\s]+/',$keywords);    
$total_keywords = count($keywords); 

foreach($keywords as $key=>$keyword) {
    $where .= "`company_name`  LIKE  '%$keyword%'   ";
    if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }
}

$results = "SELECT `company_name`, LEFT(`company_details`,150)
    as `company_details`, `category` FROM `clients`
    WHERE $where";
$results_num = ($results = mysql_query($results)) ?  mysql_num_rows($results) : 0 ;


if($results_num === 0) {
    return false; 
} else {

    while($results_row = mysql_fetch_assoc($results)) {

    $returned_results[] = array(

    'company_name'  => $results_row['company_name'],
    'company_details'  => $results_row['company_details'],



    );
}

return $returned_results;

}


}

2 个答案:

答案 0 :(得分:1)

这是用PHP编写的吗?你也连接什么类型的数据库?这些信息会有所帮助!有时不同的数据库可以挑剔查询的结构!

再好不过,试试这段代码,看看它是否能产生预期效果:

foreach($keywords as $key=>$keyword) {
    $where .= "(   `company_name`  LIKE  '%$keyword%'   "
           .  " OR `categories`    LIKE  '%$keyword%'  )";
    if($key != ($total_keywords - 1)) {
        $where .= " AND ";

    }
}

答案 1 :(得分:1)

你可以在这种情况下使用带有括号的OR

$where .= "(`company_name`  LIKE  '%$keyword%' OR `category`  LIKE  '%$keyword%')   ";