FIND_IN_SET在codeigniter中的查询中自动添加IS NULL,还需要在我的查询中添加括号以创建组

时间:2017-12-16 05:16:03

标签: php mysql sql codeigniter filter

这是我在查询中使用FIND_IN_SET的方式,它在查询中自动添加IS NULL,还需要在WHERE s之后添加括号。cat_id ='11'和查询

$spilt=explode(',',$newstyle);

foreach ($spilt as $splitkey => $splitvalue) {
    if ($splitkey == 0) {
        $this->db->where("FIND_IN_SET(".$splitvalue.",w_card_style)");
    }
    else{
        $this->db->or_where("FIND_IN_SET(".$splitvalue.",w_card_style)");
    }
}

当我使用$this->db->last_query()打印查询时,它会提供类似

的查询
SELECT `c`.`city_name`, `s`.`name`, `s`.`location`, `s`.`starting_price`, `s`.`budget_range`, `s`.`cat_id`, `s`.`id`, `i`.`path`, `s`.`specification_status`, `s`.`per_unit_charge`, `s`.`w_card_style`, `s`.`w_card_style`, `s`.`budget_range` FROM `image_gallery` as `i` JOIN `specification` as `s` ON `i`.`ser_id`=`s`.`id` JOIN `cities` as `c` ON `c`.`city_id`=`s`.`location` JOIN `wcard_style` as `ws` ON `ws`.`id`=`s`.`w_card_style` WHERE `s`.`cat_id` = '11' AND FIND_IN_SET(1,w_card_style) IS NULL OR FIND_IN_SET(2,w_card_style) IS NULL OR FIND_IN_SET(3,w_card_style) IS NULL AND budget_range BETWEEN 50 AND 100 GROUP BY `ser_id` HAVING `cat_id` = '11' ORDER BY `s`.`budget_range` DESC

每个FIND_IN_SET之后都有IS NULL,那么如何从Query中删除IS NULL,还需要在“WHERE s之后添加括号。cat_id ='11'和”在运行时“此

SELECT `c`.`city_name`, `s`.`name`, `s`.`location`, `s`.`starting_price`, `s`.`budget_range`, `s`.`cat_id`, `s`.`id`, `i`.`path`, `s`.`specification_status`, `s`.`per_unit_charge`, `s`.`w_card_style`, `s`.`w_card_style`, `s`.`budget_range` FROM `image_gallery` as `i` JOIN `specification` as `s` ON `i`.`ser_id`=`s`.`id` JOIN `cities` as `c` ON `c`.`city_id`=`s`.`location` JOIN `wcard_style` as `ws` ON `ws`.`id`=`s`.`w_card_style` WHERE `s`.`cat_id` = '11' AND (FIND_IN_SET(1,w_card_style) IS NULL OR FIND_IN_SET(2,w_card_style) IS NULL OR FIND_IN_SET(3,w_card_style) IS NULL ) AND budget_range BETWEEN 50 AND 100 GROUP BY `ser_id` HAVING `cat_id` = '11' ORDER BY `s`.`budget_range` DESC`enter code here`

1 个答案:

答案 0 :(得分:3)

试试这段代码我用一些chnages修改了你的代码。使用我的下面代码就可以了。

{{1}}