我目前正在开发一个 php 项目,其中我坚持使用 mysql 查询来搜索搜索结果中请求的所有可能变化。
这是我的数据库列示例:
column 1: title
column 2: description
column 3: category
column 4: subcategory
column 5: city
column 6: state
column 7: type
我想要这样的结果: 搜索标题或描述 + 状态 + 类别 + 类型中的关键字匹配
或
标题或描述 + 状态 + 子类别 + 类型中的搜索关键字匹配
或
标题或说明+城市+类别+类型中的搜索关键字匹配
或
标题或说明 + 城市 + 子类别 + 类型中的搜索关键字匹配
或
在标题或说明 + 类型中搜索关键字匹配
或
在标题或说明 + 状态中搜索关键字匹配
或
在标题或说明 + 城市中搜索关键字匹配
或
搜索标题或描述中的关键字匹配
或
状态
或
城市
或
类型
或
类别
或者我们从搜索查询中获得的任何可能的内容。
搜索包含以下选项:
关键词搜索(可选)+州选择(可选)+城市选择(可选)+类别选择(可选)+子类别选择(可选)+类型选择(可选)
这样我们就可以搜索任何关键字或状态,而无需关键字或任何我们需要的东西。
最佳答案
根据用户的选择添加 AND 条件,在 PHP 中构建查询。 PDO 示例(无需框架):
$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();
关于php - 需要有关 mysql 查询的帮助,以根据请求使用不同的可能组合搜索所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260806/