我正在開發一個與數據庫連接的Java桌面應用程序,我想知道下一個。它的結果是,據我所知,Prepared Statements避免SQL注入,而你不直接連接用戶數據,但今天我發現它不會轉義String正則表達式(如LIKE運算符中的'%' ),因爲它只是轉義可能會破壞字符串本身並改變查詢的字符。因此,如果用戶確實如此:處理字符串正則表達式的Mysql
Search = "%Dogs"; // User input
Query = "SELECT * FROM Table WHERE Field LIKE ?";
blah.setString(1, Search);
它將通過注入返回包含「狗」的所有行。
現在我要問:
1)這是一件壞事/危險觀看從全球的角度?
2-)有一個正則表達式的完整列表,Mysql可以在字符串內使用嗎?如果是這樣,你可以與我分享嗎?
謝謝。
這不是正則表達式,就是LIKE.maybe你的意思是RLIKE – Bohemian
可能的重複[使用MySQL搜索:如何轉義通配符](http://stackoverflow.com/questions/4588424/searching-using-mysql-how-to -escape-wildcards) –
@Bohemian「LIKE」的文檔確實會說「使用SQL簡單正則表達式比較進行模式匹配」。 –