如何在CodeIgniter的where_in()方法中使用逗号分隔的字符串

问题描述 投票:0回答:1

我有一些 id 存储在数据库表中,列名称为“defaultdest”,例如“1,2,3,4,5,6”。 我已将其获取到控制器中,现在我需要在另一个名为“目的地”的表中进行查询。我需要根据 Ids 获取目的地的是“1,2,3,4,5,6”。

这是另一个表的查询结果

public function index()
{
    $data = $this->data;
    $idlists = explode(",", get_option('defaultdest'));
    $data['destlist'] = $this->ui_model->destfetch($idlists);
    $this->load->view('themes/ui/home/'.get_option('uihometype').'', $data);
}

这是我在模型中的数据库查询

function destfetch($idlists)
{
    $this->db->set_dbprefix('');
    $this->db->select('*');
    $this->db->where_in('id', $idlists);
    $this->db->from("destinations");
    $query = $this->db->get();

    //print_r($this->db->last_query());
    return $result = $query->result_array();   
} 

注意:idlists 值为(由 get_option 方法返回)

$idlists = "1,2,3,4,5,6";

这不起作用,得到空白结果。

php codeigniter codeigniter-3 where-in delimited
1个回答
2
投票

Where_in 适用于数组而不是字符串。所以你的 $idlists 不应该是一个带有 '1,2,3,4,5' 的字符串,而是一个 ids 数组。

您只需执行以下操作即可做到这一点:

$idlists = "1,2,3,4,5,6";            //String
$this->db->where_in('id', explode(',', $idlists));

注意:-

explode()
用于将字符串分解为数组。

© www.soinside.com 2019 - 2024. All rights reserved.