首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要有关mysql查询的帮助,以便根据请求搜索所有列,并使用不同的组合

问需要有关mysql查询的帮助,以便根据请求搜索所有列,并使用不同的组合
EN

Stack Overflow用户
提问于 2016-07-08 07:07:35
回答 1查看 43关注 0票数 0

我目前正在从事一个php项目,在这个项目中,我坚持mysql查询,在搜索结果中搜索所有可能的请求变体。

下面是我的数据库列示例:

代码语言:javascript
复制
column 1: title
column 2: description
column 3: category
column 4: subcategory
column 5: city
column 6: state
column 7: type

我希望得到这样的结果:在标题或描述中搜索关键字匹配+状态+类别+类型

或

搜索标题或描述中的关键字匹配+状态+子类别+类型

或

搜索标题或描述中的关键字匹配+城市+类别+类型

或

搜索标题或描述中的关键字匹配+城市+子类别+类型

或

在标题或描述+类型中搜索关键字匹配

或

在标题或描述+状态中搜索关键字匹配

或

在标题或描述+城市中搜索关键字匹配

或

在标题或描述中搜索关键字匹配

或

状态

或

城市

或

类型

或

类别

或者我们从搜索查询中得到的任何可能。

搜索包含以下选项:

关键词搜索(可选)+状态选择(可选)+城市选择(可选)+类别选择(可选)+子类别选择(可选)+类型选择(可选)

因此,我们可以搜索任何关键字或状态,只有没有关键字或任何我们需要的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-08 08:40:32

通过添加和条件(取决于用户选择的内容)在PHP中构建查询。PDO示例(不需要框架):

代码语言:javascript
复制
$pdo = new PDO($dsn, $user, $pass, $opt);

// get this data from user inputs
$search_keyword = 'bla';
$conditions = [ 
    "category" => 'cat',
    "subcategory" => 'sale',
    "city" => 'auburn',
    "state" => 'NY',
    "type" => 'offer',
];


$sql = "SELECT * from data_table WHERE (title = :search OR description = :search)";

$binds = ['search' => $search_keyword];
foreach($conditions as $col => $val){
    $conditions[] = $col . ' = :' . $col;
    $binds[$col] = $val;
}

if ($conditions) {
    $sql .= " AND " . implode(" AND ", $conditions);
}

$stmt = $pdo->prepare($sql);
$stmt->execute($binds);
$data = $stmt->fetchAll();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38260806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档