复杂的搜索功能SQL


Complex search function SQL

我正在尝试使用多个复选框创建搜索函数。问题是,我的客户随机要求提供不同类别的清单。例如,他会要求提供一份有家属的员工名单,或者有时要求提供一份30岁以上员工的名单,或者有时两者都要。这个列表还可以继续,关键是他可以问我任何类别的列表。我想知道如何使用复选框和sql命令来实现这一点?提前谢谢你。对不起,我的英语很差。

您可以为每个不同的复选框分配一个特定的语句,并使用表单来POST每个单独的框。此外,如果所有查询都在同一表中运行,则可以添加固定语句并动态赋值。下面的代码是如何做到这一点的一个简短示例。
$checkbox = "Name,Age" $checkbox2 = "category2" $query ="SELECT".$checkbox ."FROM TableName WHERE Category=".$checkbox2;

将给出最终语句
"$query = SELECT Name,Age FROM TableName WHERE Category=category2

我假设您正在询问如何从复选框的输入中构建where语句。

如果你有一个这样的表单:

<form method="POST">
    <input type="checkbox" name="test">
    <input type="checkbox" name="test2">
    <input type="checkbox" name="test3">
    <input type="submit" name="submit">
</form>

你可以构建一个这样的查询:

if(isset($_POST['submit'])){
    $queryParams = array();
    if(isset($_POST['test'])){
        $queryParams[] = 'column1 = "test"';
    }
    if(isset($_POST['test2'])){
        $queryParams[] = 'column2 = "test2"';
    }
    if(isset($_POST['test3'])){
        $queryParams[] = 'column3 = "test3"';
    }
    $where = (count($queryParams) > 0) ? 'WHERE ' . implode(' AND ', $queryParams) : '';
    $query = 'SELECT column FROM table ' . $where;
    echo $query;
}

结果:

SELECT column FROM table WHERE column1 = "test" AND column2 = "test2"