获取 'f_name'` 和 'l_name' 组合搜索的搜索结果的最佳方式是什么
目前,f_name
和 l_name
在单独搜索时会拉出搜索结果。但是,在一个搜索查询中组合 f_name
和 l_name
不会产生任何结果。也许我的运算符(operator)错了?
请查看代码的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);
}
最佳答案
假设用于过滤输入的函数 alpha_num
仅保留完整的字符和数字,如果您搜索,您的 $search
变量等于 RobynWeber
这两个词,并且没有与搜索条件匹配的 l_name 或 f_name。
根据您希望搜索的工作方式,您可能需要将 $search
拆分为单独的单词,然后使用 MySQL LIKE IN()? 中描述的技术在 l_name 和 f_name 字段中搜索所有单词。
关于php - SQL搜索组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259726/