0

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

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

       $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_nameLIKE '%$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;

}


}
4

2 回答 2

1

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

无论如何,试试这段代码,看看它是否产生了预期的结果:

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

    }
}
于 2012-11-04T01:48:40.947 回答
1

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

$where .= "(`company_name`  LIKE  '%$keyword%' OR `category`  LIKE  '%$keyword%')   ";
于 2012-11-04T01:48:49.210 回答