2010-11-25 98 views
1

我有一個查詢從文本框中獲取文本並將其輸入到數據庫中。將撇號添加到查詢

它工作正常,如果該值是一樣的東西Taylor但錯誤時,它的O'Neill,因爲那一撇給了一個語法錯誤unclosed quotation mark

有沒有辦法添加O'Neill與撇號仍然存在的數據庫?

我不想用雙單引號替換它,我希望將它放入數據庫中,如圖所示。

感謝

+0

您可以發佈您用於將數據插入數據庫的代碼嗎? – Oded 2010-11-25 18:21:49

回答

2

如果使用雙單引號,你不會雙單引號在你的數據庫中結束。您將以結尾,只有一個單引號

雙人間單引號只是一種方式ESCAPE一個單引號在SQL語句。所以,當你做一個:

> insert into your_table (name) values ('O''neil'); 

O'neil實際上將在數據庫中插入。

如果您的數據庫是PostgreSQL,還有其他操作字符串的方法。例如使用$$

> insert into your_table (name) values ($$O'neil$$); 

將在數據庫中插入O'neil

1

您可以通過將其翻一番來逃脫撇號('') - 將插入單個撇號。

因此,插入O''Neill將導致O'Neill插入到數據庫中。

但是,您需要這樣做的事實表明您正在使用可供SQL Injection Attacks使用的嵌入式SQL。

如果你使用parameterized queries,你將不會變得脆弱,你不需要訴諸逃避撇號。

+0

他/她在提問中提到過。 – 2010-11-25 18:24:01

+0

@Pablo - 轉義_will_將單引號插入數據庫。 – Oded 2010-11-25 18:25:01

1

你可以用雙''提交你的SQL查詢就好了,數據庫識別出逃逸caracter並且只保存一個。

爲什麼你不想要雙單引號解決方案?