php - 搜索具有多个条件的记录
问题描述
我有一个带有多个输入的搜索表单。我正在尝试根据表单字段中给出的值搜索记录(某些字段可能为空)请帮助我实现这一点。此表单将我带到其他表单并显示记录。每当任何字段的值为空白或未选择时,它都不会给出任何输出
$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);
我在这个表格中只取了三个变量,现在它将是所有字段
解决方案
您可以通过动态 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);
推荐阅读
- reactjs - 加载第一个 localhost 时,它没有显示包含我拥有的代码的组件
- r - 使用 R (Magick) 将所有非黑色像素删除为白色
- kubernetes - 如何为 Kafka Kubernetes Nodeport 分配 DNS 名称
- applescript - 如何在忽略特定字符的同时使用 Applescript 文本项分隔符
- datepicker - 是否可以阻止 Material UI DatePicker 在日历视图中选择一天?
- sql - 异常加入Oracle
- python - python 在 cmd 中导入,但在启动 .py 文件时不导入
- python-3.x - 没有名为 apt_pkg 的模块
- java - 如何访问 Collecters.toMap 正在收集的地图?
- python - 在分类中,通过频繁的 one-hot 编码进行特征工程是否无效?