0

在我的数据库中,我的字段值为

1蓝白

2白蓝

3 蓝色

4 白色

对于每个 ID。

我有一个控制器,我在其中声明 $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 上运行它时,它给了我 Call to a member function result() 错误。我知道这种错误意味着它不会从我的数据库中检索任何数据。当我尝试在查询中出错时,我发现如果在第一个 for-each 之后使用“OR”,它会使用“AND”。您对我如何使这项工作有任何想法吗?

4

2 回答 2

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;

}
于 2012-09-03T20:19:55.683 回答
1
tags like '%$colr'or

缺少空格?

tags like '%$colr' or

此外,将 $colr 放在 '%' 之间就足够了。不需要其他线路。

所以,这应该可以解决问题:

public function test($color){

    $arry = explode(" ", $color); 

    foreach($arry as $colr){
      $this->db->where("tags like '%$colr%' "); 
    }

    $q=$this->db->get('test');
    return $q;

}
于 2012-09-03T20:09:01.500 回答