codeigniter $ this-> db-> where (); проблема нестандартной строки - PullRequest
7 голосов
/ 25 сентября 2011

Я пытаюсь выбрать некоторые значения, используя пользовательскую строку. ниже мой код

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

Произошла ошибка базы данных

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

Я думаю, что проблема в том,

WHERE `infor='rent'` 

когда я вручную выполняю этот код, он отлично работает.

WHERE infor='rent' 

как мне избавиться от

`` 

потому что он автоматически добавляется

Ответы [ 2 ]

22 голосов
/ 25 сентября 2011

Добавьте третий параметр к where() и установите его на 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() принимает необязательный третий параметр. Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить имена ваших полей или таблиц обратными галочками.

Документация CodeIgniter

0 голосов
/ 11 июня 2019

Пока решение работает, хочу добавить: будьте осторожны!Вы должны защитить свой запрос и избежать всех значений!Если вам нравится использовать Query Builder

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

Таким образом Codeigniter позаботится о правильном экранировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...