Php 在单元格中搜索字符串

Php 在单元格中搜索字符串,php,mysql,Php,Mysql,我在下图所示的数据库中保存了以逗号分隔的不同功能: 当我选择像这样的单个功能时 SELECT rt.*, rb.*, rf.*, rs.* FROM business rt INNER JOIN business_company_info rb ON rt.id=rb.business_id INNER JOIN business_attributes rf ON rt.id=rf.business_id INNER JOIN business_basic_info rs ON rt.id=rs

我在下图所示的数据库中保存了以逗号分隔的不同功能: 当我选择像这样的单个功能时

SELECT rt.*, rb.*, rf.*, rs.*
FROM business rt
INNER JOIN business_company_info rb
ON rt.id=rb.business_id
INNER JOIN business_attributes rf
ON rt.id=rf.business_id
INNER JOIN business_basic_info rs
ON rt.id=rs.business_id
WHERE business_keyword LIKE '%3000%' AND features LIKE '%feature3%' and
status= 0 ORDER BY rt.id DESC
数据是从数据库中提取的,但当我有很多功能时,它无法搜索。 这是我对所选许多功能的查询

SELECT rt.*, rb.*, rf.*, rs.*
FROM business rt
INNER JOIN business_company_info rb
ON rt.id=rb.business_id
INNER JOIN business_attributes rf
ON rt.id=rf.business_id
INNER JOIN business_basic_info rs
ON rt.id=rs.business_id
WHERE business_keyword LIKE '%3000%' AND features LIKE'%feature3,feature2,feature4%' and
status= 0 ORDER BY rt.id DESC
这是我的密码

if(isset($_POST['advance_search']) && !empty($_POST['advance_search']) && ((isset($_POST['area']) && !empty($_POST['area']))  || 
                            (isset($_POST['salary']) && !empty($_POST['salary'])) || (isset($_POST['industry']) && !empty($_POST['industry'])) || (isset($_POST['jobtype']) && !empty($_POST['jobtype'])) 
                            || (isset($_POST['keyword']) && !empty($_POST['keyword'])) || (isset($_POST['empnum']) && !empty($_POST['empnum'])) || (isset($_POST['year']) && !empty($_POST['year'])) 
                            || (isset($_POST['features']) && !empty($_POST['features'])) || (isset($_POST['employ_status']) && !empty($_POST['area']))
                            )){
                                //echo '<pre>';print_r($_POST);exit;
                                $area = $_POST['area'];
                                $salary = $_POST['salary'];
                                $industry = $_POST['industry'];
                                $jobtype = $_POST['jobtype'];
                                $keyword = $_POST['keyword'];
                                $empnum = $_POST['empnum'];
                                $year = $_POST['year'];

                                //echo '<pre>';print_r($ids);print_r($salary);print_r($keyword);print_r($jobtype);print_r($industry);exit;
                                //echo '<pre>';print_r($area);print_r($salary);print_r($industry);print_r($jobtype);print_r($keyword);print_r($empnum);print_r($year);exit;
                                /*if(isset($_POST['genre'])){
                                    $genres_search = implode(',', $_POST['genre']);
                                }*/
                                if(isset($_POST['employ_status'])){
                                    $employment_search = implode(',', $_POST['employ_status']);
                                }
                                if(isset($_POST['features'])){
                                    $features_search = implode(',', $_POST['features']);
                                }

                                $conditions = array();
                                if (!empty($area)){
                                    $conditions[] = "business_location LIKE '%$area%'";
                                }
                                if (!empty($salary)){
                                    $conditions[] = "business_salary_rule LIKE '%$salary%'";
                                }
                                if (!empty($keyword)){
                                    $conditions[] = "business_keyword LIKE '%$keyword%'";
                                }
                                if (!empty($jobtype)){
                                    $conditions[] = "business_job_type >= '$jobtype'";
                                }
                                if (!empty($industry)){
                                    $conditions[] = "business_industries LIKE '%$industry%'";
                                }
                                if (!empty($empnum)){
                                    $conditions[] = "employees_number LIKE '%$empnum%'";
                                }
                                if (!empty($year)){
                                    $conditions[] = "established_year LIKE '%$year%'";
                                }
                                if (!empty($employment_search)){
                                    $conditions[] = "employment_status LIKE '%$employment_search%'";
                                }
                                if (!empty($features_search)){
                                $conditions[] = "features LIKE '%$features_search%'";
                                }

                                $sql = "SELECT rt.*, rb.*, rf.*, rs.*
                                    FROM business rt
                                    INNER JOIN business_company_info rb
                                    ON rt.id=rb.business_id
                                    INNER JOIN business_attributes rf
                                    ON rt.id=rf.business_id
                                    INNER JOIN business_basic_info rs
                                    ON rt.id=rs.business_id
                                    WHERE ". implode(' AND ', $conditions) . " and
                                    status= 0 ORDER BY rt.id DESC"; echo '<pre>';print_r($sql);exit;

                           }

任何帮助都将不胜感激。谢谢

如果要查找所有功能的匹配项,则WHERE子句的第一部分应为:

如果您想要匹配任何功能,请使用


若您的数据不是静态的,并且是从数据库中提取的,那个么请尝试以下方法

其中业务单元关键字(如“%3000%”和功能(如“%feature%”)


试试这个。

您可以分解$feature并将其存储到数组中。 像这样的


希望有帮助。

问题是?请编辑您的问题,使您的代码更可读,问题更明确
WHERE business_keyword LIKE '%3000%' AND (features LIKE '%feature3%' AND features LIKE '%feature2%' AND features LIKE '%feature4%') .....
WHERE business_keyword LIKE '%3000%' AND (features LIKE '%feature3%' OR features LIKE '%feature2%' OR features LIKE '%feature4%') .....
if (!empty($features_search))
{
    $feature_array= explode(",", $features_search);
    for each($feature_array as $key => $feature)
    {
        $conditions[] = "features LIKE '%$feature%'";
    }
}