Php Codeigniter,其中或和来自会话的阵列
我在Php Codeigniter,其中或和来自会话的阵列,php,codeigniter,Php,Codeigniter,我在会话->用户数据('usershop')中有以下数组: 我必须从另一个表中选择数据: 只能从该表中选取链码和商店码匹配的行 我试过这个: foreach ($this->session->userdata('usershop') as $usr => $usrshop) { $where = $this->db->where(array('chain_code' => $usrshop['shop_chain'], 'shop_code'
会话->用户数据('usershop')
中有以下数组:
我必须从另一个表中选择数据:
只能从该表中选取链码
和商店码
匹配的行
我试过这个:
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')
试一试
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;
您可以执行一次every where条件,并需要在数组中捕获它们,在循环完成后,您可以直接传递它。使用活动记录您可以这样做,请确保将
where()/中的第二个参数传递为null,以便活动记录不会查找第一个参数的比较,第三个参数为FALSE,因此活动记录不会向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();
$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();