Это, как я использую 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, поэтому, как удалить IS NULL из запроса, а также нужно добавить скобки после "WHERE s
. cat_id
= '11' AND" во время выполнения, как это
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'
Попробуйте этот код, я изменил код с помощью некоторых chnages.Use мой код ниже он работает.
$spilt=explode(',',$newstyle);
foreach ($spilt as $splitkey => $splitvalue) {
if ($splitkey == 0) {
$this->db->where("FIND_IN_SET(".$splitvalue.",w_card_style)!=",0);
}
else{
$this->db->or_where("FIND_IN_SET(".$splitvalue.",w_card_style)!=",0);
}
}