为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
qq_花开花谢_0 2021-06-03 10:35:26
我有一组 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();

      }

}


查看完整回答
反对 回复 2021-06-04
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信