【问题标题】:How to create model function with where condition conditions as array如何使用条件条件作为数组创建模型函数
【发布时间】:2015-05-27 15:29:55
【问题描述】:

执行逻辑如下。

$condition = '';
if($_POST['name']!=''){
    $condition = $condition + 'cus.C_name' => $_POST['cname'];
}
if($_POST['cno']!=''){
    $condition = $condition + 'cus.C_name' => $_POST['cno'];
}

where 子句必须包含

array('cus.C_name' => $_POST['cname'],'cus.C_name' => $_POST['cno'])

如果 post 变量存在,它将追加到数组中。我是怎么做到的

【问题讨论】:

  • “我想要”是开始你的问题的一种非常糟糕的方式。您尝试过什么来解决/实现这一点?
  • 如果你想实现这一点,那么你需要为 html 控件设置与 db 字段相同的名称,即 cus.cno = $_POST['cno] 所以在 lopp 你可以使用相同的变量来使其动态化
  • 你需要and/or条件
  • @NarendraSisodia- 如果我使用或条件可以得到正确的结果
  • 我是堆栈溢出站点的新手。我很抱歉我的不礼貌方式 - Epodax

标签: php arrays json codeigniter


【解决方案1】:

如果我没记错的话会帮助你..

if($_POST['cname'] != ''){
   $this->db->where('cus.C_name', $_POST['cname']);
}

if($_POST['cno'] != ''){
   $this->db->where('cus.C_id', $_POST['cno']);
}

并使用诸如$this->model->post()$this->model->get() 之类的ci 方法

【讨论】:

  • 是的。这就是我想要的方式。但有一个问题。这些帖子值是从过滤器发送的。如果有人只输入名称来过滤值,我必须只检查名称。如果两个条件都必须考虑
【解决方案2】:

你不能生产

array('cus.C_name' => $_POST['cname'],'cus.C_name' => $_POST['cno']);

基本上这个数组会产生

array('cus.C_name' => $_POST['cno']);

因为两个数组的键是相同的,都是一个元素;

您可以按照以下方式进行

    if($_POST['name']!='')
    {
        $this->db->where('cus.C_name',$_POST['cname']);
    }

    if($_POST['cno']!='')
    {            
        $this->db->where('cus.C_name',$_POST['cno']);            
    }

这将产生您想要的 where 条件。
小心:如果您的 name 和 cno 都不为空,它将同时产生 where 条件并且您将得到空结果,因为同一列不能两者都有价值。

最好使用$this->input->post('name') 启用CI url helper 而不是$_POST['name']

希望您能理解并帮助您。

【讨论】:

  • 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
相关资源
最近更新 更多