2011-10-11 31 views
0

我有這個我用來搜索數據庫中的IP地址的位。查詢中的Codeigniter轉義期

$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

documentation

$this->db->where()接受一個可選的第三個參數如果設置爲FALSE,笨不會嘗試用背蜱,以保護您的字段或表的名稱。」

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

如果你這樣做的話,你最好確保你正在對變量進行sanatizing。

1

這看起來像where幫手中的一個錯誤。據the documentation,您可以包括FALSE可選的第三個參數逃逸你的表/字段名停止笨:

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

但是,如果$ip來自用戶的輸入,你將不再在這個保護SQL注入查詢。