首页 > 解决方案 > 搜索具有多个条件的记录

问题描述

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

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

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

标签: phpmysql

解决方案


您可以通过动态 where 取决于输入来实现这一点。

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

$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);


推荐阅读