【发布时间】:2018-03-07 06:10:52
【问题描述】:
我正在尝试使用多个搜索选项,用户可以选择多个选项来过滤记录。
当用户不选择过滤选项时,默认情况下应返回所有记录。
这是我的 SQL 查询:
$query =
sprintf("SELECT * FROM users_leave_request
where leave_from >= '$leave_from'
AND leave_to <= '$leave_to'
AND leave_status = '$leave_stat'
AND user_id = '$emp_id'");
$result=$this->db->exec($query);
我打算做的是:
- 假设
$leave_stat参数为空,则应返回所有leave_stat值的记录。 - 同样,如果
$emp_id为空,则应返回所有用户的记录。
这有点像在参数为空时禁用*extra AND* where 条件。
我可以使用单个查询来执行此操作,还是必须为此使用单独的查询? 很感谢任何形式的帮助。谢谢。
【问题讨论】:
-
动态构建查询。如果你有一个值,只需添加任何条件。您还应该考虑使用参数化的Prepared Statements,而不是连接您的查询。