php - 无法在ajax和php中使用多个参数执行搜索

标签 php mysql codeigniter search

我有2个表teacher和teacher_skill,其结构如下

老师

id  name  age  rate     skill     loc   exp   avail
1    A    30    2       a,b,c     ABC    4    Immediate
2    B    25    4       a,d       DEF    6    Notice  
3    C    35    2       d         ABC    4    Immediate
4    D    28    1       a,f,b     DEF    6    Notice  

使用ajax,我将值提交到后端,我在后端获取这样的数据

$data = array(
  'min' => $this->input->post('min'),
  'max'=>$this->input->post('max'),
  'loc'=>$this->input->post('loc'),
  'skill'=>$this->input->post('skill'),
  'exp' => $this->input->post('exp'),
  'avail'=>$this->input->post('avail')
);

在前端,用户可以输入所有值或值的任意组合,甚至这些值中的任何一个。

min, max,loc,exp, avail will have a single value from user

skill will have multiple values separated with a comma

我有一个类似这样的基本查询

  $query = mysql_query(" SELECT * FROM teacher WHERE  %$min% < rate < %$max%  AND skill LIKE '%$skill%' AND  loc LIKE '%$loc%' AND  exp LIKE '%$exp%' AND  avail LIKE '%$avail%' ") ;

这是一个基本搜索,其中所有字段均已填写,但我无法弄清楚如何将此查询用于任何多个组合。用户可以输入任何字段,然后根据该组合我需要进行搜索

谁能告诉我哪个查询最适合这种情况

最佳答案

您应该根据您拥有的过滤器动态构建查询

$whereClause = array();
if (strlen($min) > 0) {
    $whereClause[] = "min LIKE '%$min%'";  
}
if (strlen($max) > 0) {
    $whereClause[] = "max LIKE '%$max%'";  
}
...
$sql = 'SELECT * FROM teacher WHERE ' . join(' AND ', $whereClause);    
$query = mysql_query($sql);

关于php - 无法在ajax和php中使用多个参数执行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49495018/

相关文章:

php - 如何在 Laravel 5.0 中使用 Auth::attempt 无密码登录?

java - 这个 MySQL/Java 准备语句语法有什么问题?

java - JAVA 与 MySQL 的连接太多

php - Codeigniter:图像未显示在页面中

javascript - 循环遍历表并将特定单元格存储在数组中(如果选中行)

php - 将复选框值存储在数据库中,无论是否在 Codeigniter 中选中

php - 如何管理/平衡服务实例上的半持久作业

php - 在动态更新的页面上包含 HTML 的更好方法 : php include() or MySQL Database?

PHP 和 html 选择标签不写入数据库

mysql - 找出哪个 Unicode