2016-03-01 66 views
0

我使用sqlite-porter與importSqlToDb()。但現在我遇到了單個配額或字符串中帶有反斜槓的問題。有沒有解決方案?我想寫這樣的sql查詢:「INSERT INTO Artist(Id,Title)VALUES('1','Fred's ball \ shoe');」;並且不能使用參數。cordova-sqlite-porter importSqlToDb sql注入

在此先感謝價值觀

回答

0

單引號應該在SQLite的(see here)採用雙單引號進行轉義。反斜槓和文字一樣好。所以,你應該使用:

"INSERT INTO Artist(Id,Title) VALUES ('1','Fred''s ball \ shoe');"; 

example projectcordova-sqlite-porter包含complex example這說明在值字符串使用單引號和反斜槓,例如:

INSERT INTO [Artist] ([ArtistId], [Name]) VALUES (88, 'Guns N'' Roses'); 

INSERT INTO [Track] ([TrackId], [Name], [AlbumId], [MediaTypeId], [GenreId], [Composer], [Milliseconds], [Bytes], [UnitPrice]) VALUES (3435, 'Cavalleria Rusticana \ Act \ Intermezzo Sinfonico', 302, 2, 24, 'Pietro Mascagni', 243436, 4001276, 0.99); 
+0

你好,是的,這是正確的!但是我從一個服務中獲得這個字符串,這個字符串就像'Guns N'Roses'一樣。所以,如果我使用參數創建sql查詢,就不會有問題,因爲它會處理單引號。我不能使用正則表達式來替換單引號,因爲我從服務接收到的這個字符串可以包含像「

bla bla this
」這樣的html標籤。有沒有一個函數編輯這個字符串就像我會用參數插入? – user1861065

+0

無論你如何做,你都需要在數值中加倍轉義單引號。即使它們包含在HTML中,也可以使用正則表達式。它只需要忽略屬性中的單引號。像這樣:'/>(?:[^ <'] *(')[^ <'] *)* DaveAlden