douhuang7263 2016-12-27 10:58 采纳率: 100%
浏览 46
已采纳

CodeIgniter SQL正确的格式,用于从不同的表中获取数据

I am quite new to Codeigniter. I have a problem wherein it seems my query is not working. Is it because of my format?

Model

$this->db->select('*');
  $this->db->from('
    store_products,
    products,
    category,
    subcategory,
    store,
    store_products_category');
  $this->db->where('store_products_category.store_id', $marketid);
  $this->db->where('store_products_category.subcategory_id', 'subcategory.subcategory_id');
  $this->db->where('subcategory.category_id', 'category.category_id');
  $this->db->where('store_products_category.storeprod_id', 'store_products.storeprod_id');
  $this->db->where('store_products.prod_id', 'products.prod_id');
  $this->db->where('store_products_category.store_id', 'store.store_id');
  $query = $this->db->get();
  $result = $query->row();

  return $result;

Controller

if($marketinfo = $this->MarketModel->getInfobyID($marketid)){
    $data['marketinfolist'] = $marketinfo;
    $this->load->view('layouts/header', $data);
    $this->load->view('clickbasket',$data);
    $this->load->view('navigation/mainfooter');
    $this->load->view('layouts/footer');
}

It seems that it couldn't return anything from the model. I have already tried doing the query directly on phpmyadmin and it works perfectly.

  • 写回答

2条回答 默认 最新

  • dsfd3546 2016-12-27 11:23
    关注

    You need to join the tables to get proper result...Like this..

    Your Model:

    $query = $this->db->select('*')
                    ->from('store_products')
                    ->join('products', 'store_products.prod_id = products.prod_id')
                    ->join('store_products_category', 'store_products_category.storeprod_id = store_products.storeprod_id')
                    ->join('subcategory', 'store_products_category.subcategory_id = subcategory.subcategory_id');
                    ->join('category', 'subcategory.category_id = category.category_id')
                    ->join('store', 'store_products_category.store_id = store.store_id')
                    ->where('store_products_category.store_id', $marketid)
                    ->get();
    $result = $query->row();
    return $result;
    

    And at your controller..

    function getMarketInfo($marketid)
       {
         if(!empty($marketid)){
        $marketinfo = $this->MarketModel->getInfobyID($marketid);
        $data['marketinfolist'] = $marketinfo;
        $this->load->view('layouts/header', $data);
        $this->load->view('clickbasket',$data);
        $this->load->view('navigation/mainfooter');
        $this->load->view('layouts/footer');
         }
       }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看