查询的where_in
子句中的CodeIgniter问题。
让我们看一下描述问题的查询:
WHERE `table`.`table_row` IN ('7296 ,7314 {and so on});
这是我在CodeIgniter(表达式引擎)中查询的结果
$sql = ee()->db->where_in('table.table_row', $entry_ids);
我的数组$entry_ids
是一个字符串,我之前在我的代码中获得了
$entry_ids = $ee->TMPL->fetch_param('e_id');
要处理我的查询应该是:
WHERE `table`.`table_row` IN ('7296' ,'7314' {and so on});
我已经尝试指定我的数组实际上是一个数组,而不是字符串:
$entry_ids[] = $ee->TMPL->fetch_param('e_id');
但实际上,没有任何改变。
答案 0 :(得分:1)
因此,您有一个以字符串形式存储的ID列表,您希望将其作为IN语句进行查询。
首先将字符串拆分为数组:
如果你的id用字符串分隔:
$id_array = explode(" ", $string_of_ids);
如果您的ID以逗号分隔:
$id_array = explode(",", $string_of_ids);
如果您的ID以逗号和单引号分隔:
$id_array = explode("','", $string_of_ids);
然后你可以将$ id_array传递给你的查询:
如果您的id列的类型为int:
$this->db->where_in('table.table_row', $id_array);
如果您的id列是string类型: 只需在您的ID中添加单引号:
$id_array = "'" . join("','", $id_array) . "'";
$this->db->where_in('table.table_row', $id_array);
然后,如果你的$ string_of_ids包含你的id周围的引号,你可以跳过一步:
$id_array = explode(",", $string_of_ids);
这应该保留你的报价,所以你不必再加入。
答案 1 :(得分:1)
希望这会对您有所帮助:
使用explode
将字符串转换为数组
$string = '7296 ,7314'; // string of ids
$entry_ids = explode(',', $string);
//print_r($entry_ids);
$this->db->where_in('table.table_row',$entry_ids); //use in where clause