當我從Xml讀取一些文本並將其放入數據庫時,如果文本包含'(撇號),我會收到錯誤。如何在插入數據庫時解決此問題。如何逃脫'(撇號)在MySQL?
-1
A
回答
2
哪裏有撇號是在它之前加一個\(反斜槓)。使用你的文本編輯器做一個查找和替換所有'
到\'
應該工作。小心不要搞亂XML結構。
ex。
約翰
有待
約翰\的
您也可以使用PHP或C#也逃脫它。 這裏是PHP function。
0
1
您應該始終使用任何語言特定的方法來輸入數據。對於MySQL轉義字符是\
。另一種選擇是使用帶有參數化輸入的預準備語句。這將消除逃避單撇號的需要。
我的猜測是,你的做事方式也有一個重要的SQL注入漏洞。如果您甚至沒有轉義輸入值或使用參數化準備語句,那麼可以將惡意代碼輕鬆注入到XML中。
0
從9.1.1 String Literals在MySQL參考:
有幾種方式,包括字符串中的引號字符:
A「「」加引號的字符串內「」」可以寫成「 ''」。
用「」引用的字符串內的「」「可以寫成」「」「。
在轉義字符前面加上轉義字符(「\」)。
用「」引用的字符串中的「'」不需要特殊處理,不需要加倍或轉義,同樣的,用「'」引用的字符串中的「」「不需要特殊處理。
因此,給定的字符串foo'bar
可以寫在MySQL :
'foo''bar'
'foo\'bar'
"foo'bar"
雖然上述地址的首要問題,use placeholders (aka prepared statements) - 查找每語言/適配器的正確方法。佔位符消除了需要報價(防止由定製邏輯引入的錯誤)和可防止許多惡意SQL注入情況。
由MySQL選擇的語法從其他常見的SQL實現不同;這個語法不是通用的。
相關問題
- 1. 硒逃脫撇號
- 2. 如何逃脫撇號asp.net-MVC和JavaScript
- 3. 在我的jsp逃脫撇號
- 4. 在mysql中擺脫撇號?
- 5. 如何逃脫撇號在我的變量名EJS
- 6. 逃生撇號
- 7. 如何WSO2財產XPath表達式逃脫撇號
- 8. 如何gsub逃脫引號
- 9. JSON.stringify()不逃避撇號
- 10. wordpress中逃逸撇號
- 11. 加號逃脫C++
- 12. 正則表達式逃脫圍繞收縮撇號的
- 13. 如何逃脫在MySQL中星號(*)的REGEXP
- 14. 逗號在stringbuilder中逃脫
- 15. 在C#中逃脫逗號,冒號和單引號與MySQL
- 16. 如何逃脫EL美元符號?
- 17. 我如何逃脫雙引號JSON
- 18. 如何逃脫具有多雙引號
- 19. less.css - 如何風格/逃脫方括號
- 20. 我如何逃脫星號me.regexp
- 21. 如何在插入MYSQL之前刪除撇號? (不是簡單地逃脫它們)
- 22. 撇號在mysql/php
- 23. 如何Html在Erazor逃脫?
- 24. 如何在Sequelize中逃脫?
- 25. Ansible逃脫雙花括號
- 26. Postgresql逃脫美元符號
- 27. visual foxpro逃脫雙引號
- 28. [R sqldf逃脫雙引號
- 29. 逃脫關閉大括號
- 30. PHP:Preg_match_all逃脫圓括號
請勿轉義 - * *如果在原始SQL中編寫手動處理, [*在所有其他情況下使用佔位符*](http://stackoverflow.com/a/60496/2246674)(適用於語言)。另請參閱[字符串文字語法]的官方MySQL參考(http://dev.mysql.com/doc/refman/5.7/en/string-literals.html)。 – user2246674
使用您正在使用的編程語言的正式轉義機制。不要手工逃脫,因爲還有其他角色也需要轉義,而且手動執行這樣的操作幾乎總是存在缺陷,並且會讓您容易受到攻擊。 – Spudley
簡單!使用Prepared語句。 – Naveen