我目前正在从事一个php项目,在这个项目中,我坚持mysql查询,在搜索结果中搜索所有可能的请求变体。
下面是我的数据库列示例:
column 1: title
column 2: description
column 3: category
column 4: subcategory
column 5: city
column 6: state
column 7: type我希望得到这样的结果:在标题或描述中搜索关键字匹配+状态+类别+类型
或
搜索标题或描述中的关键字匹配+状态+子类别+类型
或
搜索标题或描述中的关键字匹配+城市+类别+类型
或
搜索标题或描述中的关键字匹配+城市+子类别+类型
或
在标题或描述+类型中搜索关键字匹配
或
在标题或描述+状态中搜索关键字匹配
或
在标题或描述+城市中搜索关键字匹配
或
在标题或描述中搜索关键字匹配
或
状态
或
城市
或
类型
或
类别
或者我们从搜索查询中得到的任何可能。
搜索包含以下选项:
关键词搜索(可选)+状态选择(可选)+城市选择(可选)+类别选择(可选)+子类别选择(可选)+类型选择(可选)
因此,我们可以搜索任何关键字或状态,只有没有关键字或任何我们需要的东西。
发布于 2016-07-08 08:40:32
通过添加和条件(取决于用户选择的内容)在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();https://stackoverflow.com/questions/38260806
复制相似问题