我有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/