【问题标题】:How to use between clause in select statement in codeigneiter如何在codeigniter的select语句中使用between子句
【发布时间】:2015-03-26 08:37:49
【问题描述】:

我试图通过从一个表中获取一个数据行并将这些值用作 where 条件来从数据库中获取数据。然后我尝试将 json 字符串传递给控制器​​类。但我无法做到这一点。我该怎么写这段代码 这是我用来获取数据的代码。

 $query = $this->db->query("SELECT * FROM todaywork WHERE idEmployee = $user ");

        if ($query->num_rows() > 0)
        {
           $row = $query->row(); 

               $from = $row->T_frange;
               $to = $row->T_trange;
               $note = $row->T_note;
        }     
               $this->db->select("cus.idCustomer,cus.C_name,f.F_itemname,ctr.*");
                //$whereCondition = array('cus.idCustomer' => $_POST['custId']);
                $this->db->where('C_trnoofarr BETWEEN {$from} AND {$to}');
                //filter where
                $this->db->from('customer cus');
                $this->db->join('contracts AS ctr', 'cus.idCustomer = ctr.idCustomer', 'INNER');
                $this->db->join('facility AS f','ctr.idContracts = f.idContracts','INNER');
                $query = $this->db->get();

                return $query->result();

    }

【问题讨论】:

  • $this->db->where('C_trnoofarr BETWEEN {$from} AND {$to}',NULL,FALSE);

标签: php sql codeigniter


【解决方案1】:

在之间使用这个

$this->db->where('C_trnoofarr >', $from);
$this->db->where('C_trnoofarr <', $to);

【讨论】:

  • 这不应该是第一个greater than和第二个less than
  • @ParagTyagi 是的,会改变它
【解决方案2】:

替换这个,

$this->db->where('C_trnoofarr BETWEEN {$from} AND {$to}');

有了这个,

$this->db->where('C_trnoofarr >', $from);
$this->db->where('C_trnoofarr <', $to);

如果您想在 WHERE 子句中使用 raw,您还必须添加第三个参数。

$this->db->where('<where clause>', NULL, FALSE);

来自docs:

$this->db->where() 接受可选的第三个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名称。

你的情况可能是这样的,

$this->db->where('C_trnoofarr BETWEEN {$from} AND {$to}', NULL, FALSE);

【讨论】:

  • 感谢您的帮助。伊茨工作。非常感谢博士
【解决方案3】:
                $this->db->select('*'); 
                $this->db->from('company');
                $this->db->where("grade BETWEEN $first AND $second");
                $this->db->get()->result();

【讨论】:

  • 你能解释一下你做了什么你改变了,为什么?您的查询现在是否有可能对 SQL 注入开放?如果$first 包含1 AND 10 会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
相关资源
最近更新 更多