php - SQL搜索组合

标签 php mysql sql

获取 'f_name'`'l_name' 组合搜索的搜索结果的最佳方式是什么

目前,f_namel_name 在单独搜索时会拉出搜索结果。但是,在一个搜索查询中组合 f_namel_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/

相关文章:

sql - 用于将数据从一个表插入到具有相同列名的另一个表的存储过程

javascript - 使用 Moment 或国际化 API 时更正时区列表

php - codeigniter 如何在此查询中设置条件并加入我的第二个表

mysql - 批量上传到 AWS 上托管的 MySQL 时出错

mysql - sql - @curRow 基于列

c# - 尝试通过 ASP.NET 中的命令文本在 SQL Server 2014 中插入 ' Rahul' s Sister 时出错

php - 删除 "&"之后的所有符号

PHP MySQL 搜索并按 html <input> 显示行

mysql - 在 WordPress 自定义查询中序列化返回 false

c# - SQL Server Express 连接字符串/FluentNHibernate