Php 搜索具有多个条件的记录

Php 搜索具有多个条件的记录,php,mysql,Php,Mysql,我有一个多输入的搜索表单。我正在尝试根据表单字段中给定的值搜索记录(某些字段可能为空),请帮助我完成此操作。此表单将我带到其他表单并显示记录。每当任何字段的值为空或未选中时,都不会给出任何输出 我在这个表单中只取了三个变量,现在它将是所有字段您可以通过动态方式实现这一点,具体取决于输入。 这里首先将所有输入数据存储到一个名为$input_data的数组中,并且可以在循环中应用rest条件。这将检查所有输入 $input_data = $_POST; $where = " where 1=1";

我有一个多输入的搜索表单。我正在尝试根据表单字段中给定的值搜索记录(某些字段可能为空),请帮助我完成此操作。此表单将我带到其他表单并显示记录。每当任何字段的值为空或未选中时,都不会给出任何输出


我在这个表单中只取了三个变量,现在它将是所有字段

您可以通过动态方式实现这一点,具体取决于输入。

这里首先将所有输入数据存储到一个名为$input_data的数组中,并且可以在循环中应用rest条件。这将检查所有输入

$input_data = $_POST;

$where = " where 1=1";

foreach ($input_data as $key => $value) {
    if($value && !empty($value)) {
        $where .= "AND $key = '$value'";
    }
}

$sql = "SELECT * FROM tblfacility join tbluser on tbluser.id=tblfacility.user $where" ;
$query = $dbh -> prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);


您可以使用
运算符而不是
,因为
将与其他值匹配,而其他
将与每个值匹配
SELECT*FROM-tblfacility-join-tbluser-on-tbluser.id=tblfacility.user其中facility='“$facility.”或type='“$type.”或此处的某些条件…
您没有正确使用准备好的语句。您必须参数化所有变量。@danish-khan-I如果我使用OR运算符,它将不适用于多个条件它应该是
$\u POST[“type”]
@dev多个条件是什么意思?您可以将条件用括号括起来<代码>选择*FROM tblfacility join tbluser on tbluser.id=tblfacility.user,其中facility=some_条件,type=type或(column=column和column=column)和(column=column或column=column)。你能解释一下吗?因为我是新手
$input_data = $_POST;

$where = " where 1=1";

foreach ($input_data as $key => $value) {
    if($value && !empty($value)) {
        $where .= "AND $key = '$value'";
    }
}

$sql = "SELECT * FROM tblfacility join tbluser on tbluser.id=tblfacility.user $where" ;
$query = $dbh -> prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);