我有一组 ID,我正在从数据库中获取这些项目的详细信息。我创建了一个 foreach 循环来一个一个地获取每个项目,然后在返回控制器之前将其推送到数组。问题是查询构建器将所有 ID 组合在一个查询中。public function get_product_by_ids($ids) { $products = array(); foreach ($ids as $id) { $this->db->where('product_id', $id); $query = $this->db->get('products')->row_array(); array_push($products, $query); } return $products;}这是使用分析器的代码的结果。我的身份证是Array( [0] => 22 [1] => 18 [2] => 21)分析器生成的查询:SELECT *FROM `products`WHERE `product_id` = '22'AND `product_id` = '18'AND `product_id` = '21'AND `product_id` = '22' SELECT *FROM `products`WHERE `product_id` = '18' SELECT *FROM `products`WHERE `product_id` = '21' 输出:第一个是空的,然后我把第二个放到最后一个。我尝试使用 where_in() 正如@danblack 所说,这是生成的查询:SELECT *FROM `products`WHERE `product_id` = '22'AND `product_id` = '18'AND `product_id` = '21'AND `product_id` IN('22', '18', '21') 这是我的新代码:public function get_product_by_ids($ids) { $this->db->where_in('product_id', $ids); $query = $this->db->get('products')->result_array(); return $query;}输出:空数组。
2 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
试试这个,
public function get_product_by_ids($ids) {
$this->db->select('*');
$this->db->from('products');
$this->db->where_in('product_id', $ids);//$ids should be array
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
}else{
return array();
}
}
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消