2016-12-08 25 views
0

我正在開發與笨的web應用程序,我與逃避問題掙扎..笨查詢綁定和escate_str不足以

我把我的參數(JSON包含大量文字的)像

$this->Upload_model->upload(array($this->db->escape_str($myjson),$this->db->escape_str($myjson1),$this->db->escape_str($myjson2))); 

,並上傳,我用querybindings像

$query = $this->db->query("insert into qwerty (_title, _desid, _short,_options, _status, _current) values (?,".$did.",?,?,1,0)", $datain); 

但是這些技術似乎並沒有正確地逃避單引號

querybindings實際上對sql查詢沒有任何作用,escape_str增加了//的infront of's,但它們似乎不起作用。

看來,這是因爲JSON + mysql的,但我不能拿出自己的解決方案

誰能幫我出

//錯誤日誌:那裏有一個單引號的是t的前在Lorem存有 錯誤編號:1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't look even slightly believable. If you are going to use a passage of Lorem Ipsu' at line 1 
+0

我不熟悉笨,但如果你綁定你的價值觀,以佔位符,你不需要逃避什麼。 – jeroen

+0

也這麼想,但我突然得到一個錯誤 –

+0

$ datain中是什麼? –

回答

0

使用結合的好處是,這些值是以自動轉義,生產出更安全的查詢。您不必記住手動轉義數據;引擎會自動爲你做。

所以不需要轉義查詢輸入。

參考https://www.codeigniter.com/userguide3/database/queries.html#query-bindings

+0

你的意思是我得到了那個錯誤,因爲我使用了escape_str? –

+0

你在escape_str後檢查了JSON輸入嗎?使用這個:http://jsonlint.com/ –

+0

你是什麼意思通過檢查json?我用json_encode做了它,並沒有辦法,它不會是一個合適的JSON –