【问题标题】:Codeigniter AND OR ANDCodeigniter AND OR AND
【发布时间】:2012-10-10 11:41:38
【问题描述】:

在 codigniter 中可以做:(condition 1 AND condition2) OR (condition3 AND condition4)?

我试试:

$this->db->where(condition1 - condition2);
$this->db->or_where(condition3 - condition4);

但这是:(condition1 AND condition2) OR (condition3 OR condition4)

【问题讨论】:

  • 老实说,我没有意识到没有直接的方法可以在 Codeigniter 中对查询进行分组,直到我查了一下。我在 CI 中使用 Datamapper ORM 已经有一段时间了,有一天我想你会喜欢它的(而且分组子句很容易使用它)。

标签: php mysql codeigniter


【解决方案1】:

把它写在你的位置

$this->db->where("(condition1 AND condition2) OR (condition3 AND condition4)");

这仍然会转义数据,您不必使用 or_where 方法。

【讨论】:

    【解决方案2】:

    是的,这是可能的,为方便起见,将您想要使用的任何条件放入一个变量中

    $where ="(condition 1 AND condition2) OR (condition3 AND condition4)";
    $this->db->where($where);
    

    【讨论】:

      【解决方案3】:

      你试过这样 ::::: 吗?

      $this->db->where(COND1);
      $this->db->where(COND2);
      $this->db->or_where(COND3); 
      $this->db->where(COND4); 
      

      【讨论】:

        【解决方案4】:
        $first="(COND1 AND COND2)";
        $second= "(COND3 AND COND4)";
        
        $query=$this->db->where($first)->or_where($second)->get();
        

        【讨论】:

          【解决方案5】:

          只需像这样使用普通查询:

          $query="SELECT *
          FROM table1 INNER JOIN table2 on table1.col=table2.col
          WHERE (table1.whatever=? AND table1.hello=?) OR (table2.foo=? AND table2.pizza=?)
          LIMIT 1";
          $params=array();
          $params[]='whatever';
          $params[]='world';
          $params[]='bar';
          $params[]='cheese';
          
          
          $result=$this->db->query($query,$params);
          $result=$result->result_array();
          print_r($result);
          

          【讨论】:

            【解决方案6】:

            如果您使用的是 PHP5,那么以下代码将解决您的问题。

            $this->db->select("*")
            ->where("condition_1 && condition_2")
            ->or_where("condition_3 && condition_4");
            

            或者使用下面的代码也可以。

            $this->db->where("condition_1 ");
            $this->db->where("condition_2");
            $this->db->or_where("condition_3 "); 
            $this->db->where("condition_4 "); 
            

            【讨论】:

              猜你喜欢
              • 2012-11-06
              • 2015-03-08
              • 1970-01-01
              • 1970-01-01
              • 2021-12-27
              • 2013-03-29
              • 1970-01-01
              • 2012-01-14
              相关资源
              最近更新 更多