【问题标题】:Where and Or Where clause in a single query ? Using codeigniter单个查询中的 Where 和 Or Where 子句?使用代码点火器
【发布时间】:2016-05-27 19:13:51
【问题描述】:

这就是我想要实现的目标:select * from 'mytable' where id=2 and where status=hold or status=reserved or status=deleted

如何在 CodeIgniter 3.0 中执行此操作?

我正在使用 WAMP 设置。

【问题讨论】:

  • 您的查询似乎病了 2 在没有表名的单个查询中...您为什么要实现这一目标?

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

也许这会有所帮助:

$results = $this->db->where("id",2)->where_in('status',array("hold","deleted","reserved"))->get("mytable")->result();

【讨论】:

  • 我在等待有人用 IN 而不是所有这些 OR 发布解决方案,+1
  • in.+1 太棒了 :)
  • 哦,是的,您也可以通过使用 IN 来实现。竖起大拇指
【解决方案2】:

CodeIgniter 你可以这样使用:

$this->db->select();
$this->db->from('mytable');
$this->db->where('id',2);
$this->db->or_where('status','hold');
$this->db->or_where('status','reserved');
$this->db->or_where('status','deleted');
$query = $this->db->get();
$query->result_array(); // will return result in array format

CodeIgniter User Guide

【讨论】:

  • 是的,我应该:(我的错。
  • echo $this->db->last_query(); 输出是什么?它输出SELECT * FROM (mytable) WHERE id = 2 OR status = 'hold' OR status = 'reserved' OR status = 'deleted' 并且OP 想要SELECT * FROM (mytable) WHERE id = 2 AND (status = 'hold' OR status = 'reserved' OR status = 'deleted') 我认为......顺便说一句,不错的尝试
  • @praveen Kumar 好的,不错
  • @PraveenKumar:你的答案可能是错误的朋友:p
【解决方案3】:

CodeIgniter中的查询:

$this->db->select();
$this->db->from('tbl_name');
$this->db->where('id',2);
$this->db->or_where('status','hold');
$this->db->or_where('status','reserved');
$this->db->or_where('status','deleted');

【讨论】:

    【解决方案4】:

    您可以为此使用 $this->db->query()。

     $query= $this->db->query("select * from mytable where id=2 and (status='hold' or status='reserved' or status='deleted')");
    $result=$query->result_array();
    

    【讨论】:

      【解决方案5】:
      $this->db->select('*');
      $this->db->from('mytable');
      $this->db->where('id',2);
      $this->db->where('status','hold');
      $this->db->or_where('status','reserved');
      $this->db->or_where('status','deleted');
      $query = $this->db->get();
      $query->result_array();
      

      【讨论】:

      • 在提供代码有用的同时,还要解释您的代码,以便您的答案对所有读者有用。
      【解决方案6】:

      啊哈,明白了。以防万一其他人遇到同样的情况,这里是如何在 CodeIgniter 中处理的。

      在 CodeIgniter 中,我们可以像这样手动编写自己的子句:

      $where = "name='Joe' AND status='boss' OR status='active'";
      $this->db->where($where);
      

      【讨论】:

        【解决方案7】:

        正确的 SQL 查询是:

        SELECT * FROM mytable WHERE id = '2' AND (status = 'hold' 
        OR status = 'reserved' OR status = 'deleted')
        

        【讨论】:

          【解决方案8】:

          您可以使用下面提到的查询 -

          select * from tbl_name where id=2 and status in ('hold','reserved','deleted');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-03
            • 1970-01-01
            • 2018-01-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多