【问题标题】:How can I search for comma separated values in database using codeigniter如何使用 codeigniter 在数据库中搜索逗号分隔值
【发布时间】:2020-04-28 17:32:33
【问题描述】:

我正在尝试通过具有类别列来过滤数据库,因此我搜索类别并返回正确的项目。然而,有些项目有不止一个类别,所以我使用逗号分隔值将两个或多个类别放在一列中。我试过这个方法:

   public function get_cat_article($value)
    {
        $table = $this->get_table();
        $this->db->where('cat', $value);
        return $this->db->get($table);
    }

但这只会选取第一个分隔值。我尝试使用 'where_in' 但也只获得了第一个值。我试过“喜欢”,效果很好,但不是确定的。搜索“WS”包括其他类别,如“IWS”。我在谷歌上搜索了一个解决方案,并建议使用 fin_in_set,所以我尝试了:

public function get_cat_article($value)
    {
        $table = $this->get_table();
        $this->db->where('find_in_set('.$value.',cat)');
        return $this->db->get($table);
    }

但这根本不起作用。是我的语法错误还是这是错误的方法?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    你试过like查询吗?在一个快速演示中,这对我有用。

    public function get_cat_article($value)
    {
        $table = $this->get_table();
    
        $this->db->like('cat', $value);  // say, $value = 'reebok'
        return $this->db->get($table);
    
        // Produces: SELECT * FROM $table WHERE `cat` LIKE '%reebok%' ESCAPE '!'
    }
    

    更多详情请阅读 CodeIgniter 官方用户指南here

    【讨论】:

    • 感谢您的 cmets。我确实尝试过“喜欢”,但是如果您有一个类别 IWS,然后它会在“喜欢”搜索 WS 时被拾取,这是一个不同的类别。一旦我切换到明确的搜索,我就不会选择第二个和第三个逗号分隔的值。我想知道为什么 find_in_set 路线不适合我。
    【解决方案2】:

    尝试类似的方法,但是这样:

    public function get_cat_article($value)
    {
        $table = $this->get_table();
    
        $this->db->like('cat', $value . ',', 'after');
        $this->db->or_like('cat', ',' . $value . ',');
        $this->db->or_like('cat', ',' . $value, 'before');
        return $this->db->get($table);
    }
    

    【讨论】:

      【解决方案3】:

      使用以下代码行使用 MySql 'find_in_set' 技术似乎可以解决问题。我从这个网站获得代码Check the conditions in comma separated values 关键是:

      $this->db->where("FIND_IN_SET( '$post_period' , period) ");
      

      我只是语法错误。

      【讨论】:

        猜你喜欢
        • 2019-05-14
        • 1970-01-01
        • 2019-07-14
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 2018-12-08
        相关资源
        最近更新 更多