codeigniter $this->db->where(); custom string problem

两盒软妹~` 提交于 2019-12-23 08:58:16

问题


Im trying to select some values using a custom string. below is my code

  $this->db->from('posted');
  $st="infor='rent' AND (typeq='in' OR typeq='out')";
  $this->db->where($st);  
  $q = $this->db->get();  

A Database Error Occurred

Error Number: 1054

Unknown column ‘infor=‘rent’’ in ‘where clause’
SELECT * FROM (`posted_ads`) WHERE `infor=‘rent’` AND (typeq=‘in’
 OR typeq=‘out’)
Filename: C:\wamp\www\parklot\system\database\DB_driver.php
Line Number: 330

i think the problem is coz of

WHERE `infor='rent'` 

when i manualy execute this code it works perfectly.

WHERE infor='rent' 

how do i get rid of

`` 

because its automatically added


回答1:


Add a third parameter to the where() and set it to FALSE

  $this->db->from('posted');
  $st="infor='rent' AND (typeq='in' OR typeq='out')";
  $this->db->where($st, NULL, FALSE);  
  $q = $this->db->get();

$this->db->where() accepts an optional third parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks.

CodeIgniter Documentation




回答2:


While the solution works I wanna add: Be careful! You need to secure your query and escape all values! If you like to use the Query Builder

$q = $this->db->select('*')->from('posted_ads')
    ->where('infor', 'rent')
    ->or_group_start()
            ->where('typeq', 'in')
            ->where('typeq', 'out')
    ->group_end()
->get();

This way Codeigniter takes care of proper escaping.



来源:https://stackoverflow.com/questions/7547731/codeigniter-this-db-where-custom-string-problem

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!