Codeigniter Периоды выхода в запросе - PullRequest
0 голосов
/ 12 октября 2011

У меня есть этот бит, который я использую для поиска IP-адресов в базе данных.

$this->db->where("IP1='$ip' OR IP2='$ip'");

Когда я его использую, он избегает периодов в IP-адресах и прерывает запрос, создавая это.

SELECT * FROM (`xxxx`) WHERE `IP1='111`.`111`.`111`.`111'` 

Я хочу, чтобы это произвело:

SELECT * FROM (`xxxx`) WHERE IP1='111.111.111.111' OR IP2 = '111.111.111.111'

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Из документации :

"$this->db->where() принимает необязательный третий параметр. Если вы установите его в значение FALSE, CodeIgniter не будет пытаться защитить имена полей или таблиц обратными галочками."

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

Вам лучше убедиться, что вы проводите санитарную обработку своих переменных, если вы делаете это таким образом.

1 голос
/ 12 октября 2011

Это похоже на ошибку в where помощнике.Согласно документации , вы можете включить необязательный третий параметр FALSE, чтобы запретить CodeIgniter экранировать имена таблиц / полей:

$this->db->where("IP1='$ip' OR IP2='$ip'", NULL, FALSE);
//                                       ^^^^^^^^^^^^^ add this

Однако, если $ip исходит отпользовательский ввод вы больше не будете защищены от внедрения SQL в этом запросе.

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