MYSQL:基于用户输入过滤查询

时间:2017-10-09 06:02:06

标签: mysql

也许这是一个简单的问题,但我很难找到答案。

我正在尝试根据表category中的subjectmediumart字段值实施过滤功能。

表示如果用户仅选择category,则结果将是查询 SELECT * FROM ART WHERE category=val

如果用户选择categorysubject,则应该SELECT * FROM ART WHERE category=val AND subject=val

等等

但我不知道我是如何动态构建此查询的一种方法是根据条件编写所有可能的组合查询和执行,但我认为这不是一个好方法

2 个答案:

答案 0 :(得分:1)

$sql=" SELECT * FROM ART where 1=1   ";

if(!empty($category) {
    $sql.=" and category= $value";
}

if(!empty($subject) {
  $sql.=" and subject= $value";
}

if(!empty($medium) {
   $sql.=" and medium= $value";
}

其中1 = 1只是为了保持语法正确,否则你需要有一些登录来相应地添加,因为你不能在所有三个检查中添加(将产生不正确的sql字符串)。

了解sql注入。使用参数绑定来添加参数,这只是为了让你有所了解,这会起作用但很容易被sql注入

答案 1 :(得分:0)

尝试使用OR而不是AND的where条件中的所有过滤器,如下所示

Http/Middleware/VerifyCsrfToken.php