【问题标题】:How to pass array in where clause in code Igniter如何在codeIgniter的where子句中传递数组
【发布时间】:2015-07-07 03:01:54
【问题描述】:

我有两张桌子keywords_tagskeywords_tags_company

表格:keywords_tags

keyword_tag_id   keyword_tag_name
--------------   ----------------
1                Clothing
2                Footwear
3                Fashion

表:keywords_tags_company

​​>
keyword_tag_company_id    keyword_tag_id   company_id
----------------------    --------------   ----------
1                          1               7
2                          2               7
3                          3               7

我想选择所有keyword_tag_name 其中company_id7

这是我的查询

public function getAllTag($id) {
$this->db->where('company_id', $id);
$this->db->select('keyword_tag_id');
$tagId = $this->db->get('keywords_tags_company')->result();

$this->db->or_where('keyword_tag_id', $tagId);
$this->db->select('keyword_tag_name');
$tagName = $this->db->get('keywords_tags')->result_array();
return $tagName;
}

如果我在上面运行查询输出是:

“where 子句”中的未知列“数组” SELECT keyword_tag_name FROM (keywords_tags) WHERE keyword_tag_id= 数组

我在这个查询中有什么错误。

感谢您的帮助。

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    您在 or_where('keyword_tag_id', $tagId) 中传递数组,因为父查询返回多行我建议您使用单个查询与连接

    public function getAllTag($id) {
    return $this->db->select('t.keyword_tag_name')
           ->from('keywords_tags t')
           ->join('keywords_tags_company c','t.keyword_tag_id = c.keyword_tag_id')
           ->where('c.company_id', $id)
           ->get()
           ->result_array();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多