Codeigniter 将查询组合在一个循环中

我有一组 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;

}

输出:空数组。


qq_花开花谢_0
浏览 139回答 2
2回答

繁花如伊

试试这个,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();      }}
打开App,查看更多内容
随时随地看视频慕课网APP