Sql搜索组合

时间:2014-12-02 21:54:34

标签: php mysql sql

获取搜索结果的最佳方法是对'f_name'`'l_name'进行组合搜索

目前,f_namel_name在单独搜索时会提取搜索结果。但是,在一个搜索查询中合并f_namel_name不会产生任何结果。梅伯我的经营者错了吗?

请参阅代码的sql部分。

$search = filter_input(INPUT_POST,'search',FILTER_CALLBACK,array('options'=>'alpha_num'));

$name   =   (@$_GET['fname'])?(($_GET['fname'] == 'asc')?('fname=desc'):('fname=asc')):('fname=asc');
$age    =   (@$_GET['age'])?(($_GET['age'] == 'asc')?('age=desc'):('age=asc')):('age=asc');
$iso    =   (@$_GET['iso'])?(($_GET['iso'] == 'asc')?('iso=desc'):('iso=asc')):('iso=asc');
$org    =   (@$_GET['org'])?(($_GET['org'] == 'asc')?('org=desc'):('org=asc')):('org=asc');
$csc    =   (@$_GET['csc'])?(($_GET['csc'] == 'asc')?('csc=desc'):('csc=asc')):('csc=asc');

if(!empty($search)) {
        $results = $wpdb->get_results("SELECT * FROM `wp_plegde` WHERE `active` = '1' AND `delete` = '0' AND (`f_name` LIKE '%$search%' OR `l_name` LIKE '%$search%' OR `age` LIKE '%$search%' OR `i_shout` LIKE '%$search%' OR `org_name` LIKE '%$search%' OR `city` LIKE '%$search%' OR `state` LIKE '%$search%') ORDER BY f_name asc", ARRAY_A);
} else {
        $results = $wpdb->get_results("SELECT * FROM `wp_plegde` WHERE `active` = '1' AND `delete` = '0' ".orderBy(), ARRAY_A);
}

1 个答案:

答案 0 :(得分:0)

假设用于过滤输入的函数alpha_num只保留字符和数字,如果搜索两个单词并且没有l_name或f_name,则$search变量等于RobynWeber符合搜索条件。
根据您希望搜索的工作方式,您可能希望将$search拆分为单独的单词,然后使用MySQL LIKE IN()?

中描述的技术在l_name和f_name字段中搜索所有这些单词