我想使用Active Record将数组传递给where_in。
我看到很少的参考链接,可以这样通过:
$this->db->where_in('id', array('20','15','22','42','86'));
查询:
$mts = $this->db->select('subcat_id')->get_where('subcategory_tbl', array('cat_id' => $cat_id));
$result = $mts->result_array();
但我的结果是这种形式的数组:
Array
(
[0] => Array
(
[subcat_id] => 12
)
[1] => Array
(
[subcat_id] => 13
)
)
那么如何将这个数组id传递给where_in子句呢?我在这里很困惑。
答案 0 :(得分:0)
你可以这样做:
$this->db->where_in('cat_id', $cat_id)
$this->db->select('subcat_id');
$this->db->get('subcategory_tbl');
假设$cat_id
包含要检查的值数组。
答案 1 :(得分:0)
您需要将结果(行数组)转换为第一个"列中的值数组"这些行:
$ids = array_map(function($row) { return $row['subcat_id']; }, $result);
你可能应该在使用之前检查$ ids是否为空 - 因为(我不记得,但我认为)where_in会愉快地生成无效
SELECT ... WHERE id IN ()
如果你传递一个空数组。
答案 2 :(得分:0)
HFILE file = OpenFile(path, buff, OF_SHARE_EXCLUSIVE);
ReadFile(file, ...); // read all content of file
ClearFileContent(file); // here I need such a function to clear content of file
CloseHandle(file); // close file handle
答案 3 :(得分:0)
使用您的第一个查询,例如
$mts = $this->db->select('GROUP_CONCAT(subcat_id) as new')->get_where('subcategory_tbl', array('cat_id' => $cat_id))->row()->new;
然后使用
if($mts != "")
{
$this->db->where_in('id', $mts);
}
希望它可以帮助你......