在我的数据库中,我的字段值为
1蓝白色
2白蓝
3 Blue
4 White
每个ids。
我有一个控制器,我声明$ color =" White Blue"并将其传递给模型。 在我的模特中,我使用' explode'分开这两个单词并使用for-each进行提取。
这是我的模特:
public function test($color){
$arry = explode(" ", $color);
foreach($arry as $colr){
$this->db->where("tags like '%$colr%' or
tags like '%$colr'or
tags like '$colr%' ");
}
$q=$this->db->get('test');
return $q;
}
当我尝试在localhost上运行它时,它让我调用成员函数result()错误。 我知道这种错误意味着它不会从我的数据库中检索任何数据。 当我尝试在查询中出错时,我发现如果使用' OR' 在第一个for-each之后,它使用' AND'。你对我如何使这项工作有任何想法吗?
答案 0 :(得分:1)
tags like '%$colr'or
缺少空格?
tags like '%$colr' or
此外,将$颜色放在'%'之间。应该足够了。不需要其他线路。
所以,这应该可以解决问题:
public function test($color){
$arry = explode(" ", $color);
foreach($arry as $colr){
$this->db->where("tags like '%$colr%' ");
}
$q=$this->db->get('test');
return $q;
}
答案 1 :(得分:1)
public function test($color){
$arry = explode(" ", $color);
foreach($arry as $colr) $this->db->or_where("tags like '%$colr%' ");
$q=$this->db->get('test');
return $q;
}