2014-04-22 59 views
0
陣列

我在session->userdata('usershop')以下數組:笨在哪裏,並與會議

Array 
(
    [shop_chain] => 9001 
    [shop_code] => 1 
) 
Array 
(
    [shop_chain] => 9002 
    [shop_code] => 1 
) 
Array 
(
    [shop_chain] => 9001 
    [shop_code] => 2 
) 
Array 
(
    [shop_chain] => 9001 
    [shop_code] => 3 
) 

我不得不從另一個表中選擇數據: enter image description here

已採取只排在chain_codeshop_code與此表格匹配。

我嘗試這樣做:

foreach ($this->session->userdata('usershop') as $usr => $usrshop) { 
     $where = $this->db->where(array('chain_code' => $usrshop['shop_chain'], 'shop_code' => $usrshop['shop_code'])); 
    } 
    return $this->db->get('wd2dbschema_config.cfg_shop')->result(); 

但是,這一切並正在採取錯行的結果是這樣的:

SELECT * FROM "wd2dbschema_config"."cfg_shop" WHERE "chain_code" = '9001' AND "shop_code" = '1' AND "chain_code" = '9002' AND "shop_code" = '1' AND "chain_code" = '9001' AND "shop_code" = '2' AND "chain_code" = '9001' AND "shop_code" = '3' 

如何做到這一點,這樣只需要匹配的行?

像這樣:

SELECT * FROM "wd2dbschema_config"."cfg_shop" WHERE ("chain_code" = '9001' AND "shop_code" = '1') OR ("chain_code" = '9002' AND "shop_code" = '1') OR ("chain_code" = '9001' AND "shop_code" = '2') OR ("chain_code" = '9001' AND "shop_code" = '3') 

回答

1

使用活動記錄您可以這樣做,請確保您將where()/or_where中的第二個參數設爲null,以便活動記錄不會查找第一個參數的比較,第三個參數爲FALSE,因此活動記錄不會將其他bacticks添加到where子句表達式

$i = 0; 
foreach ($this->session->userdata('usershop') as $usr => $usrshop) { 
    if($i==0){ 
     $this->db->where(" (chain_code = '" . $usrshop['shop_chain'] . "' AND shop_code = '" . $usrshop['shop_code'] . "') ", null, FALSE); 
    }else{ 
     $this->db->or_where(" (chain_code = '" . $usrshop['shop_chain'] . "' AND shop_code = '" . $usrshop['shop_code'] . "') ", null, FALSE); 
    } 
    $i++; 
} 
return $this->db->get('wd2dbschema_config.cfg_shop')->result(); 
1

嘗試像

foreach ($this->session->userdata('usershop') as $usr => $usrshop) { 
    $where = $this->db->where(array('chain_code' => $usrshop['shop_chain'], 'shop_code' => $usrshop['shop_code'])); 
    $data[] = $this->db->get('wd2dbschema_config.cfg_shop')->result(); 
} 
return $data; 

你要麼執行一次每一個地方條件和需要趕上他們在一個數組和循環結束後,就可以直接通過它。